%Net.WebSocket.Client
class %Net.WebSocket.Client extends %Library.RegisteredObject
Implements a WebSocket client.Usage:
- Implement %Net.WebSocket.IEventListener to respond to events (most importantly, receipt of a message).
- Implement %Net.WebSocket.ICredentials to provide a username/password/SSLConfiguration for the connection as needed.
- Create a new instance of %Net.WebSocket.Client, providing a WebSocket URL and instances of the ICredentials and IEventListener implementations.
- Call Next()() to wait for the next message, and Send() to send a message.
Property Inventory (Including Private)
Method Inventory (Including Private)
Properties (Including Private)
property AcceptedProtocols as %String [ Private ];
Accepted protocols (Sec-WebSocket-Protocol request header)
Property methods: AcceptedProtocolsDisplayToLogical(), AcceptedProtocolsGet(), AcceptedProtocolsIsValid(), AcceptedProtocolsLogicalToDisplay(), AcceptedProtocolsLogicalToOdbc(), AcceptedProtocolsNormalize(), AcceptedProtocolsSet()
property Credentials as %Net.WebSocket.ICredentials [ Private ];
Provides username, password, and SSL configuration
Property methods: CredentialsGet(), CredentialsGetSwizzled(), CredentialsIsValid(), CredentialsNewObject(), CredentialsSet()
property EventListener as %Net.WebSocket.IEventListener [ Private ];
Handles open, close, message, and error events
Property methods: EventListenerGet(), EventListenerGetSwizzled(), EventListenerIsValid(), EventListenerNewObject(), EventListenerSet()
property Nonce as %String [ Private , InitialExpression = $System.Encryption.Base64Encode($System.Encryption.GenCryptRand(16)) ];
Base64-encoded 16-byte random value provided to the server for validation
Property methods: NonceDisplayToLogical(), NonceGet(), NonceIsValid(), NonceLogicalToDisplay(), NonceLogicalToOdbc(), NonceNormalize(), NonceSet()
property Protocol as %String [ Private ];
The actual protocol in use (Sec-WebSocket-Protocol response header)
Property methods: ProtocolDisplayToLogical(), ProtocolGet(), ProtocolIsValid(), ProtocolLogicalToDisplay(), ProtocolLogicalToOdbc(), ProtocolNormalize(), ProtocolSet()
property Request as %Net.HttpRequest [ Private ];
The HTTP request, wrapping use of the device used for communcation
Property methods: RequestGet(), RequestGetSwizzled(), RequestIsValid(), RequestNewObject(), RequestSet()
property URL as %String [ ReadOnly ];
WebSocket endpoint
Property methods: URLDisplayToLogical(), URLGet(), URLIsValid(), URLLogicalToDisplay(), URLLogicalToOdbc(), URLNormalize()
Methods (Including Private)
private method %OnClose() as %Status [ Language = objectscript ]
Closes the web socket connection from the client.
method %OnNew(pURL As %String, pCredentials As %Net.WebSocket.ICredentials = $$$NULLOREF, pEventListener As %Net.WebSocket.IEventListener = $$$NULLOREF, pAcceptedProtocols As %String = "", pRequest As %Net.HttpRequest = $$$NULLOREF) as %Status [ Language = objectscript ]
Inherited description: This callback method is invoked by the %New() method to
provide notification that a new instance of an object is being created.
If this method returns an error then the object will not be created.
It is passed the arguments provided in the %New call. When customizing this method, override the arguments with whatever variables and types you expect to receive from %New(). For example, if you're going to call %New, passing 2 arguments, %OnNew's signature could be:
Method %OnNew(dob as %Date = "", name as %Name = "") as %Status If instead of returning a %Status code this returns an oref and this oref is a subclass of the current class then this oref will be the one returned to the caller of %New method.
private method EstablishConnection() [ Language = objectscript ]
Makes the initial HTTP request and negotiates the upgrade to WebSocket protocol
Waits for data from the server. Returns 1 if the connection remains open, and 0 if the connection is closed or an error occurs.
The event listener will be notified upon receiving a message, or if the connection is closed or an error occurs.
@API.Method @Argument pTimeout Timeout (in seconds) to wait to receive a message from the server.
The event listener will be notified upon receiving a message, or if the connection is closed or an error occurs.
@API.Method @Argument pTimeout Timeout (in seconds) to wait to receive a message from the server.
Sends a ping frame to the server.
Returns $$$NetWebSocketErrPingTimeout if the ping times out
Returns $$$NetWebSocketErrPongInvalid if the pong response is not equal to pMessage
Otherwise, returns $$$OK @API.Method @Argument pMessage Message to send with the ping @Argument pFragmentSize Timeout (in seconds) to wait to receive a "pong" back from the server.
Returns $$$NetWebSocketErrPingTimeout if the ping times out
Returns $$$NetWebSocketErrPongInvalid if the pong response is not equal to pMessage
Otherwise, returns $$$OK @API.Method @Argument pMessage Message to send with the ping @Argument pFragmentSize Timeout (in seconds) to wait to receive a "pong" back from the server.
Sends an *unsolicited* pong frame to the server.
@API.Method @Argument pMessage Message to send with the pong
@API.Method @Argument pMessage Message to send with the pong
Sends a binary or character stream, dynamic object, or string to the server.
@API.Method
@Argument pContent Binary or character stream, dynamic object, or string to the server.
@Argument pFragmentSize Maximum size (in bytes) to send in a single frame; 0 indicates no maximum.
private method ValidateProtocolSwitch() as %Status [ Language = objectscript ]
Ensures response headers are valid for upgrading to web sockets
Inherited Members
Inherited Methods (Including Private)
- %AddToSaveSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %ConstructCloneInit()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OnAddToSaveSet()
- %OnConstructClone()
- %OnValidateObject()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %SerializeObject()
- %SetModified()
- %ValidateObject()