问题标签 [phpwebsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
514 浏览

php - Google Chrome 中当前 Websocket 协议的 PHP 服务器

哪个 Procotol 将 Google Chrome 18 用于 WebSockets?

我需要一个用于此协议的 PHP 服务器。我已经尝试过来自 nicokaiser 的 php-websocket 或来自 georgenava 的 phpwebsocket 等项目。但是我两次遇到相同的错误(尝试了演示):

0 投票
3 回答
20239 浏览

google-chrome - Chrome 17 中缺少“Sec-WebSocket-Accept”标头

编辑: 我试过这个 phpwebsocket: http: //www.wilky.it/Shared/phpwebsocket.zip它在 Firefox 中工作,但我的问题仍然存在:如何让 websockets 与 Chrome 17 中的 php 服务器一起工作?


我在这里学习教程:http: //net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

看起来好像客户端连接,然后立即断开连接。我在控制台中注意到了这个错误:

WebSocket 握手期间出错:缺少“Sec-WebSocket-Accept”标头

我正在我的 WAMP localhost 上的 Chrome 17.0.963.56 中尝试它,并启用了 php_sockets 扩展。

我在某处看到有人提到 Chrome 更改了它支持的内容,但没有深入探讨如何修复它。我希望有人能帮我完成它。(我是 websockets 的新手)。

服务器:

{PATH}>php startDaemon.php

2012-02-20 07:02:51 系统:已创建套接字资源 ID #7。

2012-02-20 07:02:51 系统:套接字绑定到 localhost:8000。

2012-02-20 07:02:51 系统:开始监听 Socket。

2012-02-20 07:03:01 WebSocket:资源 id #8 已连接!

2012-02-20 07:03:01 WebSocket:请求握手……</p>

2012-02-20 07:03:01 WebSocket:握手……</p>

2012-02-20 07:03:01 WebSocket:完成握手......</p>

2012-02-20 07:03:01 WebSocket:资源 id #8 断开连接!

客户:

套接字状态:0

插座状态:3(关闭)

0 投票
1 回答
5077 浏览

html - PHP 共享主机上的 WebSockets

我一直在研究显示“在线用户”计数器的最佳方式,该计数器已更新到第二个,试图避免连续的 ajax 轮询。

显然,WebSockets 似乎是最好的选择。由于这是一个 Intranet,我将要求使用 Chrome 或 Safari,因此不应该存在兼容性问题。

我一直在阅读一些关于 WebSockets 的文章,因为我是新手,我想我非常了解它是如何工作的。

我不太确定如何用 PHP 实现它。Node.js 似乎是这样做的自然选择,因为它具有“始终运行”的性质,但这不是一个选择。

为什么我最困惑的是 PHP 运行并且当它完成时它结束的事实。如果PHP结束了,socket连接不会丢失吗?或者如果 php 重新运行,它会通过 ip 回溯用户?(我认为不太可能)

然后我找到了这个库 http://code.google.com/p/phpwebsocket/ 但它似乎有点旧(它提到只有 Chrome nightly 与 WebSockets 兼容)

有一点说“从命令行,运行 server.php 程序以侦听套接字连接。” 这意味着我需要 SSH,这是许多共享托管计划所没有的。

我的另一个疑问是该库的源代码中的另一行:

这是否意味着 php 文件将连续运行?这允许在共享主机中吗?据我所知,所有主机在超时 1 o2 分钟后都会杀死 php。

我有一个在线用户的 mysql 表,我想使用 PHP 通过 websocket 向这些在线用户广播登录用户的数量。有人可以帮助我或向我指出如何实现这一目标的更好信息吗?

谢谢

0 投票
1 回答
2934 浏览

php - PHP 服务器和 websockets

我想开始使用 websockets 连接到 PHP 套接字服务器。该服务器应每隔一段时间检查数据库中是否发生了更改,然后将更改发送回客户端。因此,当客户端连接时,只要客户端(本例中的网络浏览器)在页面上,连接就应该保持打开状态。

然后服务器应该在一定的时间间隔检查数据库,并在需要时发回数据。我知道问题不在于 websockets(除了并非所有主要浏览器都支持它)。我主要关心的是PHP。我想在 PHP 中创建服务器,但是只要我愿意,我可以保持与 PHP 代码的连接吗?

以及间隔如何。通常在 C#.NET exe 应用程序中,我只会创建一个计时器。这怎么能在 PHP 中完成?

如果这一切都是可能的,我可以简单地在 Apache 网络服务器中运行我的 PHP 代码吗?

0 投票
0 回答
569 浏览

php - 无法连接到 PHP Websocket 服务器

我正在尝试使用phpwebsocket设置 PHP websocket 服务器。我所做的一切都完全符合 phpwebsocket 文件(除了将服务器更改为 localhost 和调整端口)。我正在尝试使用 Apache 2.2 和 PHP 5.2.17 在 Windows 7 上执行此操作。我还尝试了在网上找到的其他几个示例。

通过我尝试过的所有不同设置,我无法让 Firefox 连接到套接字。我也尝试过使用 Telnet 进行连接,但没有任何运气。我觉得必须有一个步骤我错过了,因为我尝试的一切都得到了相同的结果。我还禁用了没有改变结果的 Windows 防火墙。

关于可能导致此设置无法建立连接的任何想法?

0 投票
1 回答
964 浏览

html - HTML5 Websocket 脚本在 Ubuntu 中工作,在 Win7 或 WinXP 中不工作

我已经在我的 Win7 机器上安装了lemmingzshadow / php-websocket,这很简单:

  1. 将内容解压缩到我的 htdocs 文件夹中。
  2. 从命令行执行 server.php。
  3. 从支持 Websockets 的浏览器请求文件 /client/status.html。

现在这是我在运行 Google Chrome 19 / Windows 7 的本地机器上得到的结果

Win7 点击放大

它显示“已连接”30 秒(不显示来自服务器的信息)然后显示“已断开连接”,这是相关的命令行输出:

命令行报告

使用 Firefox 12 / WinXP 从另一台计算机通过 LAN 访问脚本时完全相同的问题

WINXP 点击放大

它似乎只在使用 Firefox 7.0.1 或 Chromium 从我的 VirtualBox Ubuntu 访问它时才有效

Ubuntu 点击放大

自从我试图弄清楚为什么会发生这种情况已经好几天了,尝试了其他 Websocket 脚本,它们只有在我从 Ubuntu 访问它们时才起作用。我什至在 Ubuntu / XAMPP 上安装了同样的脚本,但仍然遇到同样的问题(脚本在 Ubuntu 上运行良好,但在其他操作系统上却没有)。

我为此发疯,知道为什么会这样吗?

0 投票
2 回答
7428 浏览

google-chrome-extension - 无法让 websocket 连接在 Chrome 19 中工作

我有一个与 Firefox 和 Chrome 18 完美配合的 websocket 客户端/服务器。它不适用于 Chrome 19 beta。我怀疑这是由于这个浏览器现在使用了我的服务器不支持的 deflate-frame 扩展。

Chrome 19 beta 在其握手中发送:“Sec-WebSocket-Extensions: x-webkit-deflate-frame”

我让我的服务器发回:“Sec-WebSocket-Extensions:”

但要么这不是拒绝扩展的正确方法,要么我没有发现其他错误。这是握手中唯一与我从工作浏览器中看到的不同的东西。

编辑:这是一些附加信息。这些是 Wireshark 捕获的握手。


使用 Firefox 12 的握手:

GET /chatserver HTTP/1.1
主机:(本文省略)
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;rv:12.0) Gecko/20100101 Firefox/12.0
接受:text/html,application/xhtml+xml, application/xml;q=0.9, / ;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive, Upgrade
Sec-WebSocket-Version: 13
来源:(本文省略)
Sec-WebSocket-Key:2TKm4ozUQdNP17Lobt7IBg==
Pragma:no-cache
Cache-Control:no-cache
升级:websocket

HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:pSUB3BT9YUUd9n3mOeWY/1uVqJE=


使用 Chrome 18 的握手:

GET /chatserver HTTP/1.1
升级:websocket
连接:升级
主机:(本文省略)
来源:(本文省略)
Sec-WebSocket-Key:zuHLEC8pGvAMadarhCLXFA==
Sec-WebSocket-Version:13

HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:LMBSq6Bk9Kiv+zAbQlAL899pfzc=


使用 Chrome 19 的握手:

GET /chatserver HTTP/1.1
升级:websocket
连接:升级
主机:(本文省略)
来源:(本文省略)
Sec-WebSocket-Key:TbwnVcuUiqGgZn7hxvxzvQ==
Sec-WebSocket-Version:13
Sec-WebSocket-Extensions: x-webkit-deflate-frame

HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:D45BJ+Vfydy1Upcs3Hze/nuiaS8=
Sec-WebSocket-Extensions:


所有服务器响应都有 \r\n 行结尾,并在消息末尾包含一个额外的 \r\n。

FF12 和 Chrome18 工作 - Chrome19 不工作。在 Chrome19 中,服务器握手响应之后的下一个数据包是 FIN/ACK。连接已关闭。

注意。我也尝试使用连字符作为 Sec-WebSocket-Extensions 值,但这也不起作用。

0 投票
1 回答
1714 浏览

php - 如何使用 php 服务器发送 WebSocket hybi-17 帧

我尝试在 PHP 握手和接收数据中实现 WebSocket 服务器,但如果我尝试向客户端发送数据,Chrome 19 会说“服务器不得屏蔽它发送给客户端的任何帧。” 但我不掩盖数据。我的代码如下所示:

我使用 socket_write() 将它发送给客户端

编辑: Firefox 13 也关闭了连接

0 投票
2 回答
1294 浏览

php - 有没有办法在没有持续运行的服务器端 php websocket 服务器的情况下运行 websockets?

让我澄清一下

我玩过,phpwebsockets发现它需要websocket server永远/持续运行以将状态等保存在内存中,websockets当无法在服务器端运行服务器时,有什么方法可以运行?

0 投票
0 回答
340 浏览

php - PHP Websocket没有监听远程连接

我正在尝试使用 Websockets 编写一个实时聊天应用程序。我尝试使用两种不同的 PHP 实现来设置 Websockets 服务器。(https://github.com/lemmingzshadow/php-websockethttp://code.google.com/p/php-websocket-server/)我使用 xampp shell 运行服务器,当我从同一台电脑。但是,当我尝试使用同一 LAN 中的另一台计算机进行连接时,服务器甚至没有收到握手请求。

是因为同源政策吗?有解决方法吗?

如果这很重要,我正在使用 xampp 1.7.1 和 PHP 5.3.8