2012-04-24 38 views
0

我想进入网络套接字的勇敢的新世界,但我无法得到任何工作。套接字无法工作 - 我错过了什么愚蠢的东西?

我已经下载并尝试了几个PHP套接字服务器,但没有喜悦。他们似乎很少有关于如何在自己的服务器上实际运行的步骤信息。

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

我应该传递什么作为第二参数?我读过,但我不太确定。

任何帮助表示赞赏。

回答

0

路径要传递到WebSockets的什么都没有做与文件系统内的实际路径。
当WebSocket连接到服务器时,它只是使用实际地址“localhost”在您的情况下,而端口“33”。然后在握手会采取“路径”的详细信息,这是“/sockets/server.php”你的情况,并把他们握手,所以握手的第一行会看起来像HTTP请求:

GET /sockets/server.php HTTP/1.1 

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

Here为RFC 6455上的WebSockets URI的一些信息。

以及不要使用端口33,因为它可能是由dsp服务采取的。检查港口地图here
如果将服务器端WebSocket绑定到端口33,则应该继续连接。

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

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

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

这里的WebSockets协议的正式文件:RFC 6455。它有你需要了解WebSockets协议所有方面的所有信息。

在此期间,您可能有兴趣查找现成的解决方案。并通过他们的例子。

+0

谢谢,Maksims。这是你的第一句话,我不明白。我已经看到了像WebSocket('localhost/path/to/file.php')这样的东西,所以这似乎指向一个文件。我已经尝试过一些准备好的例子,但他们当然要求你改变设置:主机,路径,端口等,这是我不明白,他们似乎没有解释。 – Utkanos 2012-04-24 21:22:24

+0

我已经添加了一些信息,描述了你在回答中的路径。希望它能说清楚。 – moka 2012-04-25 10:05:47

+0

再次感谢Maksims。恐怕我还是有点迷路。1)关于使用PHP控制台的大部分博客/教程都是必要的? 2)[这个非常模糊的教程](http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/)的第2步说“根据您的设置更改服务器”,没有说明这实际上是什么意思,例如我应该指定什么端口? 3)我尝试安装该教程的源文件,我无法弄清楚要更改什么,以及要做些什么。抱歉... – Utkanos 2012-04-25 18:26:54