WebsocketServer
Provides a Websocket server compatible with Websocket versions [8, 13]
Currently does not support Websocket Extensions
Minimum required usage:
using SimpleWebsockets
server = WebsocketServer()
listen(server, :client) do client::WebsocketConnection #must be called before `serve`
#...
end
serve(server)
Constructor
SimpleWebsockets.WebsocketServer
— TypeWebsocketServer([; options...])
Constructs a new WebsocketServer, overriding serverConfig
with the passed options.
Example
using SimpleWebsockets
server = WebsocketServer([; options...])
Server Methods
SimpleWebsockets.serve
— Functionserve(server::WebsocketServer, [port::Int, host::String; options...])
Opens up a TCP connection listener. Blocks while the server is listening.
Defaults:
- port: 8080
- host: "localhost"
; options...
are passed to the underlying HTTP.servers.listen
Example
closed = Condition()
#...
@async serve(server, 8081, "localhost")
#...
wait(closed)
SimpleWebsockets.emit
— Functionemit(server::WebsocketServer, data::Union{Array{UInt8,1}, String, Number})
Sends the given data
as a message to all clients connected to the server.
Example
emit(server, "Hello everybody from your loving server.")
Base.close
— Methodclose(server::WebsocketServer)
Gracefully disconnects all connected clients, then closes the TCP socket listener.
Base.isopen
— Methodisopen(server::WebsocketServer)::Bool
Returns a Bool indication if the server TCP listener is open.
Base.length
— Methodlength(server::WebsocketServer)::Int
Returns the number of clients connected to the server.
Server Events
Server event callback functions are registered using the listen
method.
SimpleWebsockets.listen
— Methodlisten(callback::Function, server::WebsocketServer, event::Symbol)
Register event callbacks onto a server. The callback must be a function with exactly one argument.
Valid events are:
- :listening
- :client
- :connectError
- :peerError
- :closed
Example
listen(server, :client) do client
#...
end
Triggered when the server TCP socket opens
listen(server, :listening) do details::NamedTuple
# details.port::Int
# details.host::Union{Sockets.IPv4, Sockets.IPv6}
end
Triggered when a client connects to the server
Returns a WebsocketConnection
to the callback.
listen(server, :client) do client::SimpleWebsockets.WebsocketConnection
# ...
end
Triggered when an attempt to open a TCP socket listener fails
listen(server, :connectError) do err::WebsocketError.ConnectError
# err.msg::String
# err.log::Function > logs the error message with stack trace
end
Triggered when a client tries to connect with bad conditions, eg. invalid headers
listen(server, :peerError) do err::WebsocketError.PeerConnectError
# err.msg::String
# err.log::Function > logs the error message with stack trace
end
Triggered when the server TCP socket closes
listen(server, :closed) do details::NamedTuple
# details.port::Int
# details.host::Union{Sockets.IPv4, Sockets.IPv6}
end