2011-09-09 160 views
0

好吧,我已经阅读了一百万个教程,并且在评论部分总是有人问我现在正在经历的事情,并且没有给出真正的答案,只是为了澄清,是的,即时通讯使用websockets工作的最新版本的chrome。HTML 5网络套接字

页面加载后,我不断收到“已断开”错误。在IIS

首先IM运行过程中出现PHP 5(不是我的选择)

我已经下载http://bohuco.net/dev/websocket/?source=WebSocketServer.php

,并试图测试出http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/

,我已经下载了该文件的位置是在www.something.co.uk/html5/test

,其中包括上面的演示文件,并WebSocket的PHP。

,我感到困惑的事情是如何//连接到服务器

var server = new ServerEventsDispatcher("<someip>:12345"); 

与位于上面的文件路径server.php连接。

我可以在someip部分添加域和URL吗?

任何帮助,这是非常感谢。

编辑

一些更多的阅读之后,似乎我可以。

http://dev.w3.org/html5/websockets/

var socket = new WebSocket('ws://game.example.com:12010/updates'); 
socket.onopen = function() { 
    setInterval(function() { 
    if (socket.bufferedAmount == 0) 
     socket.send(getUpdateData()); 
    }, 50); 
}; 

因此,我的下一个问题(因为这仍然没有解决的情况)

的server.php文件中,为localhost有效或者它必须是IP /域名?

$server = new WebsocketServer('localhost', 12345, 'process'); 

编辑

我已经改变了网络套接字连接

//Connect to the server 
var server = new ServerEventsDispatcher("domain.co.uk:81/path/to/server.php"); 

,并改变了scripts.php的端口81,仍然一无所获......

回答

2

的WebSocketServer您创建对象时给出的端口上已连接启动的服务器。请注意,由于显而易见的原因,此端口不能与Web服务器相同。

JavaScript端需要打开一个WebSocket到该服务器,假设ServerEventsDispatcher在内部打开一个新的WebSocket在ws://:12345 /上,您需要添加运行WebSocketServer的服务器的主机名或IP地址那里有正确的端口号。

因此,说WebSocketServer在someserver.domain上运行。COM端口81(因为80由IIS最有可能使用的):

var server = new ServerEventsDispatchet("someserver.domain.com:81"); 

寻找在该JavaScript类它实际上是打开直接使用地址的网页套接字的代码;所以你也可以在那里使用ws://someserver.domain.com:81,如果你想指定协议(或SSL的wss)。

在编辑的后续编辑中编辑: 我会在该WebSocketServer类中为您的服务器使用公共地址;因为它会尝试在其绑定:

socket_bind($this->master, $this->address, $this->port) or die("socket_bind() failed"); 

还看到:http://nl3.php.net/manual/en/function.socket-bind.php

除了你的最新编辑:

你不应该的路径添加到您的PHP脚本。当你打开你的PHP脚本时,它应该尝试打开该WebSocket服务器;但websocket服务器将运行在"ws://<servername>:<port>"。因此,在JavaScript中,您可以将其用作地址,然后在浏览器中浏览测试程序的php脚本。

- 编辑服务器使用 -

因为这会变得太长/不可读的评论;根据该网站,你必须使用php命令行来实际启动服务器类:

“打开一个终端窗口(窗口上的命令行)并导航到您的项目目录。使用PHP执行脚本,如果全部转到计划你应该得到以下消息:“

$ php -f server.php 
Server Started : 2010-05-26 22:40:03 
Listening on : localhost port 12345 
Master socket : Resource id #5 

当这样做了;服务器应该启动并收听。然后,您可以使用JavaScript中的WebSocket连接到该服务器,并使用websocket url,如上所述:)

+0

仍然没有这样的喜悦... –

+1

您可以尝试检查websocketserver是否实际在服务器上运行,方法是检查netstat输出。当你浏览到启动WebSocketServer的php脚本时,它应该显示在那里监听给定的端口(:81)。另外,您的服务器必须允许通过端口81传入流量。 – Yhn

+0

!在端口81浏览你的URL到server.php不起作用,但是在80端口上!让我调查更多! –