无法让套接字工作 - 我错过了什么愚蠢的事情?

时间:2012-04-24 19:30:59

标签: php javascript websocket

我正试图进入勇敢的网络套接字世界,但我无法正常工作。

我已经下载并尝试了几个PHP套接字服务器,但没有任何乐趣。他们似乎非常缺乏关于如何在自己的服务器上实现工作的一步一步的信息。

我将路径传递给服务器脚本作为新WebSocket()的第一个参数 - 例如'WS://本地主机:33 /插座/ server.php'。是吗?

我应该作为第二个参数传递任何东西吗?我已经读过了,但我不太确定。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

传递给WebSockets的路径与文件系统中的实际路径无关 当WebSocket连接到服务器时,它只在您的情况下使用实际地址“localhost”,并使用端口“33”。然后在握手的HTTP请求中,它将采用“path”细节,即你的情况下为“/sockets/server.php”,并将它们置于握手中,因此第一行握手将如下所示:

GET /sockets/server.php HTTP/1.1

因此,您的应用程序将使用它来决定如何处理它。如果您想使用它并使其看起来与实际文件相关或以您自己的方式使用它。

Here是来自RFC 6455的关于WebSockets URI的一些信息。

同样不要使用端口33,因为它可能由dsp服务使用。检查端口映射here 如果将服务器端WebSocket绑定到端口33,则应继续进行连接。

建立TCP层连接后,它应该通过握手的HTTP请求进行。

在那之后完成,并且成功了。客户端的JavaScript将抛出onopen回调。如果出现问题,它将会发生错误并发生事件。

成功建立连接后,WebSocket确实可以通过握手进行消息传递。客户端将接收原始字符串作为消息或二进制(如果服务器发送二进制数据,具有特定操作码的消息)。但服务器将接收带有框架和一些标头的数据。浏览器会自动应用解帧,因此在客户端,您不必担心这一点。但是在服务器端,您必须自己动手,或者使用一些现有的库来为您处理。

以下是WebSockets协议的官方文档:RFC 6455。它包含了解WebSockets协议所有方面所需的所有信息。

与此同时,您可能有兴趣寻找现成的解决方案。并通过他们的例子。