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

Server Methods

SimpleWebsockets.serveFunction
serve(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)
source
SimpleWebsockets.emitFunction
emit(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.")
source
Base.closeMethod
close(server::WebsocketServer)

Gracefully disconnects all connected clients, then closes the TCP socket listener.

source
Base.isopenMethod
isopen(server::WebsocketServer)::Bool

Returns a Bool indication if the server TCP listener is open.

source
Base.lengthMethod
length(server::WebsocketServer)::Int

Returns the number of clients connected to the server.

source

Server Events

Server event callback functions are registered using the listen method.

SimpleWebsockets.listenMethod
listen(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
source
:listening

Triggered when the server TCP socket opens

listen(server, :listening) do details::NamedTuple
    # details.port::Int
    # details.host::Union{Sockets.IPv4, Sockets.IPv6}
end
:client

Triggered when a client connects to the server

Returns a WebsocketConnection to the callback.

listen(server, :client) do client::SimpleWebsockets.WebsocketConnection
    # ...
end
:connectError

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
:peerError

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
:closed

Triggered when the server TCP socket closes

listen(server, :closed) do details::NamedTuple
    # details.port::Int
    # details.host::Union{Sockets.IPv4, Sockets.IPv6}
end