AdvancedSocket
AdvancedSockets aims to help handling connectivity issues from the client side when using ColdFusion WebSocket solution.
Below is a simple example of how to implement. The data attributes defined in the body are the default values and do not have to be set but can be overridden. For more information on how and where they are set refer to the Attributes / Properties section.
Properties / Attributes
- autoConnect
Controls the auto connect feature of the AdvancedSocket.
Defaults totrue
but can be managed by thedata-auto-connect
attribute in the body tag. It also requires a pingURL to be defined. - name
The name of your global websocket variable name.
Defaults tows
but can be managed by thedata-name
attribute in the body tag. - channels<br/ >
Comma separated list of channels to subscribe to.
Managed by thedata-channels
attribute in the body tag. - clientID
The subscriber ID returned from ColdFusion on a succesful connection. This is used when the autoConnect feature is enabled to make sure that we are still an active subscriber. - clientInfo
This is a key-value object that is passed when creating a connection. By default AdvancedSocket uses a third party request to find out additional geo-based data of the request. This is also used to pass in a username and any additional info you may want to. - doMessage
Defines the global function to run on a succesful message. Defaults todoMessage
. If the function is not defined or does not exists a log message will be displayed (if debug is enabled).
Defaults todoMessage
but can be managed by thedata-do-message
attribute in the body tag. - timer
Used for the check AdvancedSocket.checkConnection setTimeout - pingURL
The URL that will be used to ping if we are still a good connection. Should return a JSON object with a success value of true or false.
Managed by thedata-ping-url
attribute in the body tag. - onlineTimer
The timeout value to ping if autoConnect is enabled while we have a good connection.
Defaults to30 seconds
but can be managed by thedata-online-timer
attribute in the body tag. - offlineTimer
The timeout value to ping if autoConnect is enabled while we have a bad connection.
Defaults to5 seconds
but can be managed by thedata-offline-timer
attribute in the body tag. - reconnectTimer
The timeout value call a reconnect attempt when aFORCE-RECONNECT
value is received from the server.
Defaults to500ms
but can be managed by thedata-reconnect-timer
attribute in the body tag. - timerCount
The timeout value that is used on reconnect calls. It is automally updated to either the online or offline value based on current state. - debug
Boolean value to display log messages.
Defaults tofalse
but can be managed by thedata-debug
attribute in the body tag. - statusLabel
The status document element defined by an id of status-message.
Defaults tostatus-message
but can be managed by thedata-status-label
attribute in the body tag.
Functions
- init
Sets up all required EventListeners to handle window connection events (connectionerror, goodconnection, requireconnection, offline, online). Sets up the timerCount to the onlineCount and then request the checkConnection() function. - checkConnection
Sets up timer and request first ping() call if autoConnect is enabled. - fireEvent
Creates and dispatches custom events. - ping
Polls request to the server to check if connection is still valid. - onMessage
Handles messages returned. Onwelcome, authenticate and/or subscribe
messages it auto fires the AdvancedSocket.connected() function. OnFORCE-RECONNECT
messages fires the AdvancedSocket.forceReconnect() funciton based on the reconnectCount. On a regular messages passes to the Global Function that will handle your message. - onOpen
Fired onced the connection is open. If authentication is required, it calls the authenticate() WS function if not passes to the AdvancedSocket.getIPInfo() function, which is the last step before subscribing. - onClose
Fired on connection close - onError
Fired on connection errors - getIPInfo
Makes a request to ip-api.com to request Geo Based IP data. On response or if jQuery is not available it will call AdvancedSocket.connectWS(), the final step which handles all connections. - connectWS
Loops thru your defined channels and calls the WS subscribe() function. - forceReconnect
Fired when aFORCE-RECONNECT
message is received. Calls the WS closeConnection() and openConnection() functions which in turn when the socket is open again fires the AdvancedSocket.onOpen() function. - setTimer
Handles setting the timer that fires off the check connection event using window.setTimeout - doLog
Outputs console logs if debug is set to true. This can be defined with the body data-debug attribute. - disconnected 🤘 (overwrite to customize)
Fired when a socket is disconnected. Updates the status label. - connecting 🤘 (overwrite to customize)
Fired when the socket is connecting. Updates the status label. - connected 🤘 (overwrite to customize)
Fired when the socket is connected. Updates the status label.