我和您最近在同一条船上,这是我的工作:
1)我使用phpwebsockets代码作为如何构建服务器端代码的参考。(您似乎已经在执行此操作,并且正如您所指出的,由于多种原因,该代码实际上并不起作用。)
2)我使用PHP.net阅读有关phpwebsockets代码中使用的每个套接字函数的详细信息。通过这样做,我终于能够理解整个系统在概念上是如何工作的。这是一个很大的障碍。
3)我阅读了实际的WebSocket草案(请对其进行网络搜索,因为每个帖子不能发布两个以上的链接)。在开始深入研究之前,我不得不阅读了很多次。在整个过程中,您可能不得不一次又一次地回到本文档,因为它是拥有正确,最新信息的权威资源。有关WebSocket
API的信息。
4)我根据#3草案中的说明对正确的握手过程进行了编码。这还不错。
5)握手后,我一直收到从客户端发送到服务器的一堆乱码,直到我意识到数据已被编码并且必须被屏蔽后,我才能弄清楚为什么。以下链接在这里对我有很大帮助:
请注意,此链接上的可用代码存在许多问题,如果不做进一步修改,将无法正常工作。
6)然后,我遇到了以下SO线程,该线程清楚地说明了如何正确地编码和解码来回发送的消息:如何在服务器端发送和接收WebSocket消息?
这个链接真的很有帮助。我建议在查看WebSocket草案时咨询它。它将有助于使草案中的内容更有意义。
7)至此我几乎完成了工作,但是使用WebSocket开发的WebRTC应用程序出现了一些问题,因此我最终在SO上问了自己一个问题,最终我解决了。要参考问题和答案,请在网络上搜索“
SORTC候选人信息末尾的这些数据是什么?” (不带引号)。
8)至此,我几乎可以正常工作了。我只需要添加一些其他逻辑来处理连接的关闭,就完成了。
这个过程总共花了我大约两个星期。好消息是,我现在非常了解WebSocket,并且能够从头开始制作自己的客户端和服务器脚本,效果很好。希望所有这些信息的总汇能够为您提供足够的指导和信息,以编写您自己的WebSocket
PHP脚本。祝好运!
编辑#2
:虽然我仍然喜欢使用PHP来完成许多服务器端相关的工作,但我不得不承认我最近确实很热身使用Node.js,主要原因是因为它的设计更好。比PHP(或任何其他服务器端语言)更能处理WebSocket。因此,我最近发现,在服务器上设置Apache/ PHP和Node.js并使用Node.js运行WebSocket服务器以及使用Apache/PHP进行其他操作要容易得多。在无法安装/使用Node.js forWebSocket的共享托管环境中,您可以使用Heroku等免费服务来设置Node.jsWebSocket服务器并进行跨域从您的服务器请求它。



