如何在PHP中创建WebSockets服务器?

7

我已经在网上搜索了两天,试图理解Web sockets的工作原理。由于我刚开始接触Javascript和PHP大约两三个月,我对Http协议以及如何与服务器“握手”感到非常困惑。

很遗憾,目前我无法提出比标题更具体的问题。

然而,比起希望回答标题中的问题,我更需要一份能够全面教授我有关Web sockets的资源,例如书籍或在线教程。

非常感谢您的任何帮助。


1
参考文献 http://php.net/manual/zh/book.sockets.php - Jared Drake
1
@JaredDrake 套接字和WebSockets有关,但它们是非常不同的东西。 - loganfsmyth
@loganfsmyth,你能详细解释一下吗? - William Oliver
2个回答

10
通常情况下,套接字只是可以通过它发送数据的TCP流。HTTP是建立在其上的。WebSockets是在HTTP旁边/之上构建的,允许实时地在浏览器和服务器之间发送数据。标准套接字也能做到这一点,但是浏览器有严格的安全性限制,这使得使用标准套接字与它们通信变得困难。
当您需要从浏览器向服务器建立持久连接以进行实时应用程序或推送通知等内容时,WebSockets非常有用。
很遗憾我不太了解PHP的实现,但看起来这里有一个库: http://code.google.com/p/phpwebsocket/ 个人而言,我会避免在PHP中执行此类操作,因为PHP / Apache可能相当耗费资源,而由于套接字在某人查看页面时始终保持打开状态,因此服务器资源可能会很快耗尽。
很多人都喜欢使用NodeJS和socket.io,因为这样就可以在服务器和浏览器上使用JavaScript,但这真的取决于个人喜好。我会查看Socket.IO并找到具有良好客户端的语言。
看起来这个问题也很有用:Using PHP with Socket.io

谢谢,那非常有帮助。您建议使用什么替代PHP? - William Oliver
phpwebsocket似乎没有得到维护,而且已经相当过时了。它仅支持Websocket协议的一个弃用版本,该版本仅由Safari使用。 - simonc

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接