0

我正在尝试进入 Web 套接字的勇敢新世界,但我什么都做不了。

我已经下载并尝试了几个 PHP 套接字服务器,但没有任何乐趣。他们似乎非常缺乏关于如何才能真正让事情在您自己的服务器上运行的分步信息。

我将服务器脚本的路径作为第一个参数传递给 new WebSocket() - 例如'ws://localhost:33/sockets/server.php'。那正确吗?

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

任何帮助表示赞赏。

4

1 回答 1

0

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

GET /sockets/server.php HTTP/1.1

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

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

也不要使用端口 33,因为它可能被 dsp 服务占用。在此处查看港口地图。
如果您将服务器端 WebSocket 绑定到端口 33,那么它应该继续连接。

TCP 层的连接建立后,应该通过 HTTP Requests 进行,即 Handshaking。

完成后,就成功了。客户端的 JavaScript 会抛出 onopen 回调。如果出现问题,它将引发 onerror 和 onclose 事件。

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

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

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

于 2012-04-24T20:20:42.140 回答