Header containing initialization data like activation.
IP Address of client.
Path of client has connected.
Get state.
Get current state of connection state with the remote client.
List of values are such like below:
REJECTING
: The WebSocketAcceptor.reject method is on running.NONE
: The WebSocketAcceptor instance is newly created, but did nothing yet.ACCEPTING
: The WebSocketAcceptor.accept method is on running.OPEN
: The connection is online.CLOSING
: The WebSocketAcceptor.close method is on running.CLOSED
: The connection is offline.Get Driver for RFC (Remote Function Call).
The Controller
is an interface who defines provided functions from the remote
system. The Driver
is an object who makes to call remote functions, defined in
the Controller
and provided by Provider
in the remote system, possible.
In other words, calling a functions in the Driver<Controller>
, it means to call
a matched function in the remote system's Provider
object.
Controller
: Definition onlyDriver
: Remote Function CallAn interface for provided features (functions & objects) from the remote system (Provider
).
Whether to convert type of function parameters to be compatible with their primitive.
A Driver for the RFC.
Join connection.
Wait until the connection to be closed.
Join connection or timeout.
Wait until the connection to be closed until timeout.
The maximum milliseconds for joining.
Whether awaken by disconnection or timeout.
Join connection or time expiration.
Wait until the connection to be closed until time expiration.
The maximum time point to join.
Whether awaken by disconnection or time expiration.
Ping to the remote client.
Send a ping message to the remote client repeatedly.
The ping message would be sent every internal milliseconds, until the connection be disconnected. The remote client will reply with a pong message, so that the connection would be alive until be explicitly disconnected.
Interval milliseconds
Protected
replyData Reply Function.
A function should be called when data has come from the remote system.
When you receive a message from the remote system, then parse the message with your special protocol and covert it to be an Invoke object. After the conversion, call this method.
Structured data converted by your special protocol.
Set Provider
An object would be provided for remote system.
Static
upgradeUpgrade to WebSocket protocol.
If you've not opened websocket server from WebSocketServer, you can
still compose the WebSocketAcceptor
instance by yourself, by upgrading
the HTTP connection to the websocket protocol.
For reference, this upgrade()
method is useful when you're planning to
make a server supporting both HTTP and WebSocket protocols, and
distinguishing the protocol by the path of URL.
HTTP incoming message.
WebSocket instance
Optional
handler: ((acceptor: WebSocketAcceptor<Header, Provider, Remote>) => Promise<any>)A callback function after the connection has been established.
Web Socket Acceptor.
The
WebSocketAcceptor
is a communicator class interacting with the remote websocket client through RPC (Remote Procedure Call), created by the WebSocketServer class whenever a remote client connects to the websocket server.When a remote client connects to the websocket server, so that a new
WebSocketAcceptor
instance being created, you can determine whether to accept the client's connection or not, reading the header and path properties. If you've decided to accept the connection, call the accept method withProvider
instance. Otherwise, reject it through the reject method.After accepting the connection, don't forget to closing the connection after your business has been completed to clean up the resources. Otherwise the closing must be performed by the remote client, you can wait the remote client's closing signal by the join method.
Also, when declaring this WebSocketAcceptor type, you have to define three generic arguments;
Header
,Provider
andRemote
. Those generic arguments must be same with the ones defined in the WebSocketServer class.For reference, the first
Header
type represents an initial data from the remote client after the connection. I recommend utilize it as an activation tool for security enhancement. The second generic argumentProvider
represents a provider from server to client, and the otherRemote
means a provider from the remote client to server.Author
Jeongho Nam - https://github.com/samchon