是否提供Web套接字的本机PHP支持?


72

寻找Web套接字实现的Hello World类型示例:

这是来自php.net的Socket Create参考,但这看起来比Web Sockets更底层。

我想使用caniuse.com上所示的Web套接字,该套接字现在已在所有新的主要浏览器中实现。

Google搜索打开了这个Nets.TutsPlus网站,在其中可以使用JavaScript示例代码...但是我需要知道如何在PHP中实现服务器端,而不是示例中的Java,Ruby或Node.js。

PHP套接字创建相关吗?PHP本身是否支持Web套接字?我想正确的方向实现PHP会有所帮助。

实际上,本教程的phpwebsockets链接已损坏...这是图书馆应该使用的库吗?

Websockets.org有一个测试应用程序,但是没有提到PHP。



2
谷歌搜索“PHP的WebSockets”为您提供了许多成果,如:socketo.meflynsarmy.com/2012/02/php-websocket-chat-application-2-0code.google.com/p/phpwebsocket
scrappedcola

1
?我没有看到关于如何处理在PHP的Web接一个明确的方向......是它本身支持或者我需要另一个库...将是我就如何落实的第一个问题....

在搜索中,请勿将套接字与Web套接字混淆。
布拉德(Brad)

2
很好的问题。这是我想问的。
Gunah Gaar

Answers:


49

就本地提供的标准PHP WebSocket对象而言,没有本地支持。

您需要使用一个库。

接下来要考虑的是WebSocket服务器的运行方式。通常,PHP在Apache,Nginx(通过FastCGI)或Microsoft IIS(通过Fast CGI)中运行。对于Apache和IIS,这可能是一个问题,因为它并不是真正在考虑持久性连接(例如WebSocket)的情况下构建的。我不确定Nginx。这就是为什么大多数PHP WebSocket库将被构建为独立的库以作为其自己的进程运行的原因。

看到:

注意:IE10现在已在Windows 8中发布

另请参阅:Ajax推送系统


5
主机提供商是否支持此?小型...像godaddy.com,wiredtree.com这样,我基本上只是选择一个库,然后将其放到我的Web文件夹中吗...是我在LAMP堆栈中……

对此的普遍回答是,托管服务提供商不喜欢您创建持久性连接-绝对不会潜在地存在数百或数千个持久性连接。我个人认为共享主机上的自托管WebSocket使用不会在很长一段时间内成为一种选择。当然,它与标准LAMP堆栈恕我直言不能很好地集成。就目前而言,我认为诸如Pusher(我为之工作)之类的托管服务是共享托管LAMP堆栈上的开发人员的最佳解决方案。
leggetter 2012年

2
我检查了Wired Tree的技术支持,他们说很好。

1
@leggetter您可以提供有关持久连接仇恨的链接吗?当我切换到100%ajax时,我的带宽使用量直线下降。在使用100%网络套接字后,它以大约相同的速度下降。所以我很好奇。提前致谢!

5
@Gracchus-leggetter所说的是很多常识。向外界打开套接字会带来很多问题,尤其是当该服务通常由新手编码人员设计时。您会遇到流程管理问题,连接管理问题,安全性问题(每个开放端口基本上都是通向系统的一扇门)等。此外,如果服务没有中断,不会充斥安全性问题并且可以高效运行,它基本上成为提供商的竞争服务。很少有人对这种事情持开放态度。
JSON
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.