我需要一个服务器才能使用HTML5的WebSockets吗?

81
当使用WebSockets时,我是否需要编写服务器端代码?换句话说,我的客户端应用程序中的JavaScript是否需要连接到专门的服务器,或者现有的Apache服务器是否可以支持它?
6个回答

21
服务器必须支持Web套接字。在HTTP进行第一次握手之后,服务器和客户机打开一个套接字连接。服务器必须能够理解并接受这个握手。
在我的上一个项目中,我们成功地使用了最新的Jetty版本运行web套接字连接。
2014年2月27日: 现在我也正在使用XSockets.net在.net下实现websockets,并且效果非常好,你甚至不需要一个web服务器(自托管)。ASP.NET的WebSocket实现也工作得相当不错。

cwebsocket在GitHub上是一个很好的小型服务器。它很容易扩展成一个HTTP服务器。 - minghua

6

是的,你需要编写服务器端代码。

我建议使用基于php的另一个websocket服务器:ratchet。此外,这个链接比较了ratchet和sockJS之间的websocket服务器性能。

客户端和服务器端完整代码及浏览器支持列表,请参见此链接


5

当然,您需要一个WebSocket服务器。但是不同语言中有许多免费的WebSocket服务器,例如Java中的jWebSocket和.NET中的SuperWebSocket,您可以直接使用它们。


2
你为什么会说“当然”需要一个服务器呢?它不可以以点对点的方式操作吗? - Jonathan Stark
@JonathanStark 不是的。Websocket 只能用于客户端/服务器端通信,不能用于点对点通信。如果需要点对点解决方案,请查看 WebRTC 规范。 - JAR.JAR.beans
我的错。我在想WebRTC。对此感到抱歉。 - Jonathan Stark

5

目前谷歌网站上有一些插件正在开发,用于Apache...

根据定义,Websockets(就像普通套接字一样)是客户端-服务器的,所以是的,你需要一个服务器。然而,等待Apache插件还有另一种选择。

我正在使用托管服务器 http://www.achex.ca 。它是免费的,并且你可以在JavaScript上找到如何使用服务器的教程。这是WebSocket开发的好起点。

该服务器基本上是一个消息路由器,您可以连接到它并将其用作所有WebSocket客户端的会议点。

简短回答是的,你需要一个专门的服务器,Apache不提供WebSocket。
或者
另一种选择,请查看www.achex.ca


3
在这种情况下,服务器的作用是:
在HTML5中,WebSocket像电话(双向通信),而不是对讲机。 http协议升级到了WebSocket协议。(wss:// from ws://) 服务器应该能够打开双工通道,并同意双工通信。
请查看此链接:http://www.html5rocks.com/en/tutorials/websockets/basics/ 如果使用php,请查看RATCHET。
谢谢。

1
Perl Mojolicious服务器支持Web Sockets,实现只需几行代码。
Node.js有几个WebSocket库,但最新、最好的、最支持最新规范的细节各不相同,因此要谨慎选择。
Apache Active MQ也值得一看,以及它实现的STOMP协议。

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