Assume that the client need not send message to multiple clients. That is, the bi-directional communication is only between one client and server.
So unlike in the broadcast model, you do not need a channel for communication and therefore need not define it in the Application.cfc.
Do the following to set up a point-to-point communication:
Calls a particular function in the CFC. The value returned by the function in CFC is sent back to the client that invokes the method.
invoke(CFCName, functionName [, argumentsArray])
Parameter |
Description |
|---|---|
cfcName |
The CFC filename (from where a specific function is called). |
functionName |
The function name in the CFC file. |
argumentsArray |
The function arguments as an array. |
Use the function WSSendMessage to send additional message back to the client inside the function. To continuously send messages to a client you have to create a thread in the method that you invoke using invoke. Further, you can keep sending messages inside a thread.
mycfwebsocketobject.invoke("employee","getdept",["eid_2"]); |
Sends messages to a specific client that invokes the method. This can be included as a part of the function that is called by the invoke WebSocket JavaScript method.
Nothing
WSSendMessage(message)
Parameters |
Description |
|---|---|
message |
Required. The message object. This can be of type Any. |
The following example shows how to implement a point-to-point communication. In this example, you invoke three functions defined in mycfc.cfc.
Create a CFM page index.cfm.
<script type="text/javascript"> |
Create a CFC mycfc.cfc that contains the function called from the client page.
| <cfcomponent> <cffunction name="f1" > <cfreturn "Message returned from f1"> </cffunction> <cffunction name="f2" returntype="string" > <cfargument name="arg1" type="string" required="true" > <cfset msg= "Message from wsssendmessage of f2 which you called with arg " & arg1> <cfset wssendMessage(msg)> <cfreturn "Message returned from f2"> </cffunction> <cffunction name="f3" > <cfthread action="run" name="t1" > <cfloop index="i" from="1" to="10"> <cfset sleep(20000)> <cfset wssendMessage("Message #i# from wsssendmessage of f3 #now()#")> </cfloop> </cfthread> <cfreturn "Thread initiated in f3"> </cffunction> </cfcomponent> |
Sign in to your account