我需要通过PHP websocket建立客户端和服务器之间的连接。
服务器将需要通过外部API不断检查新消息,并将它们发送到客户端。
我想了解这个概念,所以我可以编码它。我有一些问题可以帮助我把它弄清楚。
客户端我保持通过websocket调用服务器每秒钟使用javascript的setInterval()
函数还是我只做一个调用?客户端如何知道服务器有新消息?服务器端我是否创建一个脚本,运行一个无限循环,以保持检查与API和回送结果?
Websocket Websocket如何知道消息属于哪个连接?
我不确定它是否重要,但我将使用棘轮来创建websocket
在过去的日子里,我通过Comet解决了这个问题。我用了Php,Node.js。你应该检查一下comet技术,查找一下php和NOde.js。
http://www.screenr.com/SNH http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/等。
客户端:
。你连接。不需要进行轮询。(这是WebSockets的主要优势和目的。)
当服务器向客户端发送消息时,客户端将触发onmessage
回调。
是的,你可以设置一个无限循环,每隔一段时间重新检查你的API。您还可以有一个"虚拟"WebSocket客户端,当有新信息可用时,它将向主WS服务器发送消息。您还可以使用进程信号。您还可以在API端点之间设置一个打开的套接字,以便在更新时通知服务器。您可以将API设置为在服务器上推送信息。从侧信道获取信息还有几十种其他方法,列举它们(更不用说详细讨论任何一种方法)远远超出了本问题的范围。
研究、理解每种方法的好处和限制,并实现最佳方法,这就是为什么你得到大笔报酬,并被视为主题专家。
WS服务器如何知道哪个客户端正在连接
PHP套接字使用句柄——一个不透明的值,在PHP中碰巧是一个整数,但永远不应该被当作一个指示发送消息到哪里的路标。只要你的应用程序跟踪这个值(我相信Ratchet在这方面为你做了一些繁重的工作),并且它仍然与你的用户对象相关联,你就应该很好。