我将开发一个在浏览器中运行的即时消息应用程序。

哪些浏览器支持WebSocket API?


当前回答

客户端

Hixie-75: Chrome 4.0 + 5.0 Safari 5.0.0 HyBi-00/Hixie-76: Chrome 6.0 - 13.0 Safari 5.0.2 + 5.1 iOS 4.2 + iOS 5 Firefox 4.0 - support for WebSockets disabled. To enable it see here. Opera 11 - with support disabled. To enable it see here. HyBi-07+: Chrome 14.0 Firefox 6.0 - prefixed: MozWebSocket IE 9 - via downloadable Silverlight extension HyBi-10: Chrome 14.0 + 15.0 Firefox 7.0 + 8.0 + 9.0 + 10.0 - prefixed: MozWebSocket IE 10 (from Windows 8 developer preview) HyBi-17/RFC 6455 Chrome 16 Firefox 11 Opera 12.10 / Opera Mobile 12.1

任何带有Flash的浏览器都可以使用web-socket-js的shim/polyfill来支持WebSocket。

请参阅caniuse了解桌面和移动浏览器中WebSockets支持的当前状态。

有关特性/协议一致性测试,请参阅Autobahn WebSockets中包含的WS测试套件的测试报告。


服务器端

这取决于你使用哪种语言。

在Java/Java EE:

Jetty 7.0 supports it (very easy to use) V 7.5 supports RFC6455 - Jetty 9.1 supports javax.websocket / JSR 356) GlassFish 3.0 (very low level and sometimes complex), Glassfish 3.1 has new refactored Websocket Support which is more developer friendly V 3.1.2 supports RFC6455 Caucho Resin 4.0.2 (not yet tried) V 4.0.25 supports RFC6455 Tomcat 7.0.27 now supports it V 7.0.28 supports RFC6455 Tomcat 8.x has native support for websockets RFC6455 and is JSR 356 compliant JSR 356 included in Java EE 7 will define the Java API for WebSocket, but is not yet stable and complete. See Arun GUPTA's article WebSocket and Java EE 7 - Getting Ready for JSR 356 (TOTD #181) and QCon presentation (from 00:37:36 to 00:46:53) for more information on progress. You can also look at Java websocket SDK.

其他一些Java实现:

Kaazing网关 jWebscoket 网状的 xLightWeb Webbit 大气 灰熊 Apache ActiveMQ V 5.6支持RFC6455 Apache Camel V 2.10支持RFC6455 JBoss HornetQ

在c#中:

XSockets.NET 超级网套接字 部分 炼金术-网络套接字 斑点 [信号] 34

在PHP中:

棘轮 phpwebsocket。 可扩展Web套接字服务器 phpdaemon

在Python中:

pywebsockets websockify 基于Gevent-websocket、gevent-socketio和flask-sockets 高速公路 龙卷风

在C:

libwebsockets

在node . js:

套接字。io: Socket。io也有Python, Java,谷歌GO, Rack的服务器端端口 sockjs: sockjs也有用于Python、Java、Erlang和Lua的服务器端端口 WebSocket-Node - HyBi-10的纯JavaScript客户端和服务器实现。

绿色。x(也称为node .x):在Java 7 JVM上运行的类似多语言的节点,基于Netty,具有:

支持Ruby(JRuby), Java, Groovy, Javascript(Rhino/Nashorn), Scala,… 真正的线程。(不像node . js) 理解多种网络协议开箱即用,包括:TCP, SSL, UDP, HTTP, HTTPS, Websockets, SockJS作为Websockets的后备

Pusher.com是一个通过REST API访问的Websocket云服务。

DotCloud云平台支持Websockets、Java (Jetty Servlet Container)、NodeJS、Python、Ruby、PHP和Perl等编程语言。

Openshift云平台支持websockets, Java (Jboss, Spring, Tomcat & Vertx), PHP (ZendServer & CodeIgniter), Ruby (ROR), Node.js, Python (Django & Flask)平台。

有关其他语言实现,请参阅Wikipedia文章以获得更多信息。

Websockets的RFC: RFC6455

其他回答

客户端

Hixie-75: Chrome 4.0 + 5.0 Safari 5.0.0 HyBi-00/Hixie-76: Chrome 6.0 - 13.0 Safari 5.0.2 + 5.1 iOS 4.2 + iOS 5 Firefox 4.0 - support for WebSockets disabled. To enable it see here. Opera 11 - with support disabled. To enable it see here. HyBi-07+: Chrome 14.0 Firefox 6.0 - prefixed: MozWebSocket IE 9 - via downloadable Silverlight extension HyBi-10: Chrome 14.0 + 15.0 Firefox 7.0 + 8.0 + 9.0 + 10.0 - prefixed: MozWebSocket IE 10 (from Windows 8 developer preview) HyBi-17/RFC 6455 Chrome 16 Firefox 11 Opera 12.10 / Opera Mobile 12.1

任何带有Flash的浏览器都可以使用web-socket-js的shim/polyfill来支持WebSocket。

请参阅caniuse了解桌面和移动浏览器中WebSockets支持的当前状态。

有关特性/协议一致性测试,请参阅Autobahn WebSockets中包含的WS测试套件的测试报告。


服务器端

这取决于你使用哪种语言。

在Java/Java EE:

Jetty 7.0 supports it (very easy to use) V 7.5 supports RFC6455 - Jetty 9.1 supports javax.websocket / JSR 356) GlassFish 3.0 (very low level and sometimes complex), Glassfish 3.1 has new refactored Websocket Support which is more developer friendly V 3.1.2 supports RFC6455 Caucho Resin 4.0.2 (not yet tried) V 4.0.25 supports RFC6455 Tomcat 7.0.27 now supports it V 7.0.28 supports RFC6455 Tomcat 8.x has native support for websockets RFC6455 and is JSR 356 compliant JSR 356 included in Java EE 7 will define the Java API for WebSocket, but is not yet stable and complete. See Arun GUPTA's article WebSocket and Java EE 7 - Getting Ready for JSR 356 (TOTD #181) and QCon presentation (from 00:37:36 to 00:46:53) for more information on progress. You can also look at Java websocket SDK.

其他一些Java实现:

Kaazing网关 jWebscoket 网状的 xLightWeb Webbit 大气 灰熊 Apache ActiveMQ V 5.6支持RFC6455 Apache Camel V 2.10支持RFC6455 JBoss HornetQ

在c#中:

XSockets.NET 超级网套接字 部分 炼金术-网络套接字 斑点 [信号] 34

在PHP中:

棘轮 phpwebsocket。 可扩展Web套接字服务器 phpdaemon

在Python中:

pywebsockets websockify 基于Gevent-websocket、gevent-socketio和flask-sockets 高速公路 龙卷风

在C:

libwebsockets

在node . js:

套接字。io: Socket。io也有Python, Java,谷歌GO, Rack的服务器端端口 sockjs: sockjs也有用于Python、Java、Erlang和Lua的服务器端端口 WebSocket-Node - HyBi-10的纯JavaScript客户端和服务器实现。

绿色。x(也称为node .x):在Java 7 JVM上运行的类似多语言的节点,基于Netty,具有:

支持Ruby(JRuby), Java, Groovy, Javascript(Rhino/Nashorn), Scala,… 真正的线程。(不像node . js) 理解多种网络协议开箱即用,包括:TCP, SSL, UDP, HTTP, HTTPS, Websockets, SockJS作为Websockets的后备

Pusher.com是一个通过REST API访问的Websocket云服务。

DotCloud云平台支持Websockets、Java (Jetty Servlet Container)、NodeJS、Python、Ruby、PHP和Perl等编程语言。

Openshift云平台支持websockets, Java (Jboss, Spring, Tomcat & Vertx), PHP (ZendServer & CodeIgniter), Ruby (ROR), Node.js, Python (Django & Flask)平台。

有关其他语言实现,请参阅Wikipedia文章以获得更多信息。

Websockets的RFC: RFC6455