Receives a WebSocket message from the server. You must establish a synchronous WebSocket connection (with the function WebSocketConnectSync) beforehand. Do not use the function WebSocketConnect in this case, as this will establish an asynchronous WebSocket connection.
webapi.bdh
WebSocketReceiveMessage( in hWebSocket : number,
out sData : dstring optional,
out nMessageKind : number optional,
in fTimeout : double optional ): boolean
| Parameter | Description |
|---|---|
| hWebSocket | A handle, which identifies the WebSocket. To retrieve this handle, use the WebSocketConnectSync() function. |
| sData | Will contain the WebSocket message received from the server.
If nMessageKind is of type text, sData will contain the text converted in the current codepage. If nMessageKind is of type binary, sData will contain the bytes received from the server. |
| nMessageKind | Will contain the kind of WebSocket message received from the server. Can be one of the following:
|
| fTimeout | Defines the timeout (in seconds) for waiting for a WebSocket message from the server. If no message is received within this timespan, the function returns false. The default value is 0 (infinite). |
true if successful
false otherwise
transaction TMain
var
hWebSocket0 : number;
sMessage : string;
nMessageKind : number;
begin
// SYNCHRONOUS: Messages from server via WebSocketReceiveMessage
hWebSocket0 := WebSocketConnectSync("http://lnz-testsite:90/websocketechoexample/websocketecho");
ThinkTime(2.1);
WebSocketSendTextMessage(hWebSocket0, "Rock it with HTML5 WebSocket");
WebSocketReceiveMessage(hWebSocket0, sMessage, nMessageKind);
Print("Received message: '" + sMessage + "'");
if (nMessageKind = WEBSOCKET_MESSAGEKIND_TEXT) then
Print("Message Kind: TEXT");
elseif (nMessageKind = WEBSOCKET_MESSAGEKIND_BINARY) then
Print("Message Kind: BINARY");
end;
ThinkTime(3.8);
WebSocketSendTextMessage(hWebSocket0, "Hello World!");
WebSocketReceiveMessage(hWebSocket0, sMessage, nMessageKind);
Print("Received message: '" + sMessage + "'");
if (nMessageKind = WEBSOCKET_MESSAGEKIND_TEXT) then
Print("Message Kind: TEXT");
elseif (nMessageKind = WEBSOCKET_MESSAGEKIND_BINARY) then
Print("Message Kind: BINARY");
end;
ThinkTime(2.8);
WebSocketSendTextMessage(hWebSocket0, "Bye");
WebSocketReceiveMessage(hWebSocket0, sMessage, nMessageKind);
Print("Received message: '" + sMessage + "'");
if (nMessageKind = WEBSOCKET_MESSAGEKIND_TEXT) then
Print("Message Kind: TEXT");
elseif (nMessageKind = WEBSOCKET_MESSAGEKIND_BINARY) then
Print("Message Kind: BINARY");
end;
// NO MESSAGE FROM SERVER => Timeout, expect error to be raised for the following WebSocketReceiveMessage() (after 4.0 seconds of waiting)
WebSocketReceiveMessage(hWebSocket0, sMessage, nMessageKind, 4.0); // specify 4.0 seconds timeout, default is infinite
ThinkTime(1.0);
WebSocketClose(hWebSocket0);
end TMain;