HTML是超文本标记语言,是一种专门用来制作网页的语言,而HTML5就是它的第五个版本,2014年10月29日,万维网联盟宣布,经过接近8年的艰苦努力,该标准规范终于制定完成,该标准针对当前互联网的飞速发展制定了更加标准的网页语言规范及适用功能,同时也给我们开发者带来了更多的开发选择,学习它是每个前端开发者必修的课程。
if ("WebSocket" in window) { alert("您的浏览器支持 WebSocket!"); } else { // 浏览器不支持 WebSocket alert("您的浏览器不支持 WebSocket!"); return; }
var ws = new WebSocket("ws://localhost:9998/echo");Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTPS,其中 wss 表示在 TLS 之上的 Websocket。如:
ws://example.com/wsapi wss://secure.example.com/Websocket 使用和 HTTP 相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket 协议使用 80 端口;运行在 TLS 之上时,默认使用 443 端口。
ws.onopen = function() { // Web Socket 已连接上,使用 send() 方法发送数据 ws.send("发送数据"); alert("数据发送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("数据已接收..."); }; ws.onclose = function() { // 关闭 websocket alert("连接已关闭..."); };
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <div id="test_panel"> <a href="javascript:WebSocketTest()">运行 WebSocket</a> </div> </body> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("您的浏览器支持 WebSocket!"); } else { // 浏览器不支持 WebSocket alert("您的浏览器不支持 WebSocket!"); return; } // 打开一个 web socket var ws = new WebSocket("ws://localhost:80/echo"); ws.onopen = function() { // Web Socket 已连接上,使用 send() 方法发送数据 ws.send("hello,world!"); alert("数据发送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("数据已接收..."); }; ws.onclose = function() { // 关闭 websocket alert("连接已关闭..."); }; } </script> </html>
成员类型 | 名称 | 说明 |
---|---|---|
属性 | readyState | 只读属性,readyState 表示连接状态,可以是以下值:
|
属性 | bufferedAmount | 只读属性,bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。 |
事件/回调函数 | open | Socket.onopen,WebSocket 连接建立时触发的回调函数 |
事件/回调函数 | message | Socket.onmessage,客户端接收服务端数据时触发的回调函数 |
事件/回调函数 | error | Socket.onerror,通信发生错误时触发的回调函数 |
事件/回调函数 | close | Socket.onclose,连接关闭时触发的回调函数 |
方法/函数 | send() | 使用连接发送数据 |
方法/函数 | close() | 关闭连接 |
名称 | 说明 | 网址 |
---|---|---|
phpwebsocket | php环境支持的WebSocket的应用服务器 | http://code.google.com/p/phpwebsocket/ |
jetty | 开源的HTTP服务器和Servlet引擎,它可以为JSP和Servlet提供运行时环境, 比如 Java Web应用最常用的Servlet容器Tomcat,由于其轻量、灵活的特性, Jetty也被应用于一些知名产品中,例如ActiveMQ、Maven、Spark、 GoogleAppEngine、Eclipse、Hadoop等;版本7开始支持websocket |
https://www.eclipse.org/jetty/ |
netty | Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。 Netty提供异步的、事件驱动的网络应用程序框架和工具, 用以快速开发高性能、高可靠性的网络服务器和客户端程序。 |
https://netty.io/ |
ruby | Ruby中的HTML5WebSocket服务器/客户端实现 | http://github.com/gimite/web-socket-ruby |
Kaazing | Kaazing GateWay是一种提供跨平台跨浏览器WebSocket支持的网关, 由Java编写 |
https://github.com/kaazing |
Tomcat | Tomcat 服务器是一个免费的开放源代码的Web 应用服务器, 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用, 是开发和调试JSP 程序的首选,7.0.27支持websocket, 建议用tomcat8,7.0.27中的接口已经过时 |
http://tomcat.apache.org |
WebLogic | WebLogic是美国Oracle公司出品的一个application server, 确切的说是一个基于JAVAEE架构的中间件, WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应用的Java应用服务器。 |
https://www.oracle.com/middleware/technologies/weblogic.html |
node.js | Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 Node 是一个让 JavaScript 运行在服务端的开发平台 |
https://github.com/theturtle32/WebSocket-Node |
socket.io | Socket.io是一个WebSocket库,包括了客户端的js和服务器端的nodejs, 它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。 它会自动根据浏览器从WebSocket、AJAX长轮询、 Iframe流等等各种方式中选择最佳的方式来实现网络实时应用, 非常方便和人性化,而且支持的浏览器最低达IE5.5 |
http://socket.io |
nginx | Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器, 同时也提供了IMAP/POP3/SMTP服务 |
http://nginx.com/ |
Mojolicious | Mojolicious框架是一个非常简洁轻巧的perl语言的下一代web网络框架, 其不需要第三方包的依赖即可提供强大的功能 |
https://mojolicious.org/ |
python | gevent-socketio是Socket.IO协议的Python实现, 最初由LearnBoost为Node.js开发,然后移植到其他语言 |
https://github.com/abourget/gevent-socketio |
Django | jango 是一个开放源代码的 Web 应用框架,由 Python 写成 | https://github.com/stephenmcd/django-socketio |
erlang | 适用于Erlang / OTP的小型,快速,现代HTTP服务器。 | https://github.com/ninenines/cowboy |