Php HTML5Web套接字

Php HTML5Web套接字,php,sockets,web,Php,Sockets,Web,好的,我已经阅读了一百万篇教程,在评论部分,总有人问我现在遇到的问题,但没有给出真正的答案,我只是想澄清一下,是的,我使用的是websockets工作的最新版本的chrome 当页面加载时,我不断收到“断开连接”错误 首先,我在IIS上运行PHP5(不是我的选择) 我已经下载了 试着测试一下 我下载的文件的位置在www.something.co.uk/html5/test中 其中包括上面的演示文件和websocket php 我感到困惑的是如何//连接到服务器 var server = new

好的,我已经阅读了一百万篇教程,在评论部分,总有人问我现在遇到的问题,但没有给出真正的答案,我只是想澄清一下,是的,我使用的是websockets工作的最新版本的chrome

当页面加载时,我不断收到“断开连接”错误

首先,我在IIS上运行PHP5(不是我的选择)

我已经下载了

试着测试一下

我下载的文件的位置在www.something.co.uk/html5/test中

其中包括上面的演示文件和websocket php

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

var server = new ServerEventsDispatcher("<someip>:12345");
所以我的下一个问题(因为这仍然不能解决问题)

在server.php文件中,localhost是有效的还是必须是ip/domain

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

我已将web套接字连接更改为

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

并将scripts.php中的端口更改为81,但仍然没有任何内容…

您链接的WebSocketServer类在创建对象时在给定的端口上启动所述服务器。请注意,由于明显的原因,此端口不能与Web服务器相同

javascript端需要向该服务器打开一个WebSocket,假设ServerEventsDispatcher在ws://:12345/上内部打开一个新的WebSocket,则需要添加运行WebSocketServer的服务器的主机名或ip地址,并在其中添加正确的端口号

因此,假设WebSocketServer在端口81的someserver.domain.com上运行(因为80很可能被IIS使用):

查看javascript类的代码,它实际上直接使用地址打开了一个WebSocket;因此,如果要指定协议(或用于SSL的wss),也可以在那里使用
ws://someserver.domain.com:81

在编辑的后续操作中进行编辑: 我会在WebSocketServer类中使用您服务器的公共地址;因为它将尝试绑定到它上:

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

除最新编辑外:

您不应该将路径添加到php脚本中。当您打开PHP脚本时,它应该尝试打开WebSocket服务器;但是websocket服务器将只运行在
“ws://:”
。因此,在javascript中,您可以将其用作地址,然后在浏览器中浏览到php脚本以获得测试程序

--编辑以供服务器使用--

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

“打开终端窗口(windows上的命令行)并导航到您的项目目录。使用PHP执行脚本,如果一切按计划进行,您将收到以下消息:”


当这一切结束时;服务器应该已启动并正在侦听。然后,您可以使用javascript中的WebSocket和如上所述的WebSocket url连接到该服务器:)

您可以通过检查netstat输出来检查WebSocket服务器是否在服务器上实际运行。当您浏览到启动WebSocketServer的php脚本时,它应该显示在给定端口上侦听(:81)。此外,您的服务器必须允许在端口81上传入流量。!在端口81上浏览到server.php的url不起作用,但在端口80上可以!让我再调查一下!我认为主要的问题是你对脚本的作用有错误的看法。php类实际上在端口81上启动第二个(!)服务器,该服务器接受websocket流量。websocket本身不是通过IIS处理的,而是由PHP实现的服务器。因此,为什么javascript中的WebSocket应该只连接到
ws://server:port/
,而不连接/path/to/server.php,那么如何激活script.php呢?它一直在运行吗?我仔细阅读了这篇文章,并在上面的回答中添加了相关部分:)
var server = new ServerEventsDispatchet("someserver.domain.com:81");
socket_bind($this->master, $this->address, $this->port) or die("socket_bind() failed");
$ php -f server.php
Server Started : 2010-05-26 22:40:03
Listening on   : localhost port 12345
Master socket  : Resource id #5