我需要通过PHP websocket在客户端和服务器之间建立连接。
服务器需要继续使用外部API检查新消息并将其发送给客户端。
我想理解这个概念,所以我可以编写代码。我有一些问题可以帮助我把它包裹起来。
客户端
我是否每秒使用javascript的setInterval()
功能通过websocket继续拨打服务器,还是只拨打一个电话?客户端如何知道服务器有新消息?
服务器端 我是否创建了一个运行无限循环的脚本来继续检查API并回显结果?
Websocket websocket如何知道邮件属于哪个连接?
我不确定这是否重要,但我将使用Ratchet来创建websocket
答案 0 :(得分:1)
在过去的几天里,我通过Comet解决了这个问题。我用了Php,Node.js。你应该检查彗星技术并查找php和NOde.js。
http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/
等
答案 1 :(得分:0)
客户端:
没有。你已经联系了。没有民意调查可以执行。 (这是WebSockets的主要优势和目的。)
当服务器向客户端发送消息时,客户端将触发onmessage
回调。
服务器端:
是的,您可以设置一个无限循环,以设定的间隔重新检查您的API。您还可以拥有一个“虚拟”WebSocket客户端,当有新信息可用时,它将向您的主WS服务器发送消息。您还可以使用过程信号。您还可以在API端点之间设置一个打开的套接字,以便在更新时通知您的服务器。您可以将API设置为在服务器上推送信息。还有几十种从侧面通道获取信息的其他方法,并且枚举它们(更不用说详细到任何一种方法)远远超出了这个问题的范围。
研究,了解每种方法的好处和限制,并实施最佳方法,这就是为什么你得到了大笔的支付,并被推迟作为主题专家。
WS服务器如何知道连接了哪个客户端
PHP套接字使用句柄 - 一个不透明的值,在PHP中恰好是一个整数,但绝不应该被视为除路标之外的任何其他内容,说明将消息发送到哪里。只要你的应用程序跟踪这个值(并且我相信Ratchet为你做了一些繁重的工作,在这方面)它仍然与你的用户对象相关联,你应该是好的。