ReceiveWebSocket (Socket function): Difference between revisions

From m204wiki
Jump to navigation Jump to search
 
(4 intermediate revisions by the same user not shown)
Line 12: Line 12:
<td>A continuation frame. A continuation frame is treated as text or binary based on the op code of the first frame.</td></tr>  
<td>A continuation frame. A continuation frame is treated as text or binary based on the op code of the first frame.</td></tr>  
<tr><th>1</th>
<tr><th>1</th>
<td>A text frame. Text frames are are translated to ASCII with the translate table in effect for the port.</td></tr>
<td>A text frame. Text frames are are translated to EBCDIC with the translate table in effect for the port.</td></tr>
<tr><th>2</th>
<tr><th>2</th>
<td>A binary frame. No translation is done for binary frames.</td></tr>
<td>A binary frame. No translation is done for binary frames.</td></tr>
Line 36: Line 36:


==Usage notes==
==Usage notes==
Received data may be masked by the sender. Masked data is always unmasked using the sender's masking key before it is returned to the application.
Sending a control frame always forces a flush of the TCP output buffer. A close or a ping are the only valid control frames.
==Examples==
==Examples==
The following example receives a text message from a WebSocket client.
<p class="code">...
                                                         
%sock = WebSocket                                                             
if %sock is null then                                                         
  audittext Socket closed, status is {$STATUSD}                             
  stop                                                                       
end if 
                                                                     
%op = %sock:ReceiveWebSocket(%wsi)                                           
if %op eq 1 then                                                             
  setText %wso  = Received your text message of {%wsi:length} bytes.         
  %sock:SendWebSocket(%wso, %op, true)                                       
end if                                                                                   
...
</p>
==See also==
==See also==
{{Template:Socket:ReceiveWebSocket footer}}
{{Template:Socket:ReceiveWebSocket footer}}

Latest revision as of 16:27, 19 August 2019

Receive Web Socket framed message (Socket class)

[Introduced in Model 204 7.8 βeta]


This page is under construction.

Syntax

%opCode = socket:ReceiveWebSocket( string)

Syntax terms

%opCode op code is a number indicating the type of web socket frame received. Numbers 0-7 are non-control frames. Numbers 8-15 are control frames.
0 A continuation frame. A continuation frame is treated as text or binary based on the op code of the first frame.
1 A text frame. Text frames are are translated to EBCDIC with the translate table in effect for the port.
2 A binary frame. No translation is done for binary frames.
3-7 Reserved for future use.
8 Connection close frame. A close frame should be sent in response.
9 Ping. The receiver should respond with a Pong frame, unless a close frame has been received.
10 Pong. This is sent as a response to a Ping frame.
11-15 Reserved for future use.
128 This value is added to the frame op code to indicate the final fragment of a non-control message. The first fragment may also be the final fragment.
socket Socket object
string string

Usage notes

Received data may be masked by the sender. Masked data is always unmasked using the sender's masking key before it is returned to the application.

Sending a control frame always forces a flush of the TCP output buffer. A close or a ping are the only valid control frames.

Examples

The following example receives a text message from a WebSocket client.

... %sock = WebSocket if %sock is null then audittext Socket closed, status is {$STATUSD} stop end if %op = %sock:ReceiveWebSocket(%wsi) if %op eq 1 then setText %wso = Received your text message of {%wsi:length} bytes. %sock:SendWebSocket(%wso, %op, true) end if ...

See also