Changes

Jump to navigation Jump to search
1,949 bytes added ,  23:09, 10 August 2018
no edit summary
This [[Module Library|XQuery Module]] contains functions for accessing specific WebSocket functions. This module is mainly useful in the context of [[WebSockets]].
Within the WebSocket module you can access functions in the context of the specific client. You can access the clientid, the clientpath and broadcast a message to all connected clients without the caller/client. If you have to access functions with more rights, like getting the clientids of other connected clients, you should checkout the [[WebSockets Module]]
=Conventions=
=Functions=
 
==websocket:send==
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|websocket:send|$message as xs:anyAtomicType, $ids as xs:string* |empty-sequence()}}
|-
| '''Summary'''
|Sends a <code>message</code> which may be of type xs:string, xs:base64Binary, or xs:hexBinary to the user(s) with the ID(s) <code>$ids</code>
|}
==websocket:broadcast==
|-
| '''Summary'''
|Broadcasts <code>message</code> which may be of type xs:string, xs:base64Binary, or xs:hexBinary to all connected members clients except to the caller. |} ==websocket:emit=={| width='100%'|-| width='120' | '''Signatures'''|{{Func|websocket:emit|$message as xs:anyAtomicType|empty-sequence()}}|-| '''Summary'''|Emits a <code>message</code> which may be of type xs:string, xs:base64Binary, or xs:hexBinary to all connected clients.
|}
|-
| '''Summary'''
|Returns the ID of the current client WebSocket connection.|} ==websocket:ids=={| width='100%'|-| width='120' | '''Signatures'''|{{Func|websocket:ids||xs:string*}}|-| '''Summary'''|Returns the IDs of all current WebSocket connections.
|}
|-
| '''Summary'''
|Returns the path of the current WebSocketClient. If the <code>$id</code> parameter is set, the path of a specific user with the ID <code>$id</code> will be returned.
|}
=Usage Tips=websocket:path=={| width='100%'|-| width='120' | '''Signatures'''|{{Func|websocket:path|$id as xs:string|xs:string}}|-* | '''Summary'''|Returns the path of specific user with the ID <code>websocket:$id</code> returns your current session id. You can use all [[Session Module]] and [[Sessions Module]] functions within the websocket context.|}
=Example1=
==Code==
<pre class="brush:xquery">
* Create a json-result
* Broadcast the result to all connected clients without the calling client
 
=Example 2=
==Code==
<pre class="brush:xquery">
module namespace websocketsexample = 'http://basex.org/modules/web-page';
(: Import the Websockets module :)
import module namespace websocket = "http://basex.org/modules/Websocket";
declare
%ws:message("/","{$message}")
function websocketsexample:message(
$message as xs:string
){
let $client-ids := websocket:ids()
let $fist-client-id := fn:head($client-ids)
let $send-to-id := websocket:send($message,$first-client-id)
let $path-first-client := websocket:path($first-client-id)
let $response := json:serialize(
<json type="object">
<messageType>PathFirstClient</messageType>
<path>{$path-first-client}</path>
</json>
)
return websocket:emit($response)
};
 
</pre>
==Explanatation==
* First of all, import the websocket module
* The annotation <code>$ws:message("/",{$message}")</code> gets called if a message arrives at the server (checkout [[WebSockets]] for further information).
* With <code>websocket:ids()</code> you will get the ids of all connected clients.
* The function <code>websocket:send($message,$first-client-id)</code> sends the <code>$message</code> to the client with the id <code>$first-client-id</code>
* <code>websocket:path($first-client-id)</code> returns the path of the client with the id <code>$first-client-id</code>
* To emit a message to all connected clients you call <code>websocket:emit($response)</code>
administrator, editor
23

edits

Navigation menu