第9章-WebSocket、Socket.IO和DerbyJS的实时应用程序-9.1.WebSocket、Socket.IO和DerbyJS的实时应用程序

xiaoxiao2021-02-28  107

实时应用程序:游戏,社交媒体,各种工具,服务和新闻

HTML5的WebSocket开创了实时连接的新标准。 在服务器端,Node.js有一个高效、非阻塞的I/O平台,非常适合处理后端到浏览器JavaScript和WebSocket的任务。

一、什么是WebSocket

1.WebSocket是浏览器(客户端)和服务器之间的一种特殊的通信通道,他是一个HTML5协议。 2.WebSocket的连接是持久的,他通过在客户端和服务器之间保持双工连接,服务器的更新可以被及时推送给客户端,而不需要在客户端以一定的时间间隔去轮询。

轮询(短期和长期)也可以用来模拟Web应用程序的实时响应。 如:一些高级库(Socket.IO)当WebSocket不可用或用户没有安装最新版本的浏览器时,用的就是轮询。 轮询相对比较简单,只用setInterval()回调和服务器上的结束点就可以实现,轮询没有牵扯到实时通信,每个请求都是独立的

二、用ws模块的例子介绍本地WebSocket和Node.js

用ws模块建立一个和Node.js服务器通信的本地WebSocket实现: 1.浏览器WebSocket实现 2.用ws模块的Node.js服务器实现

2.1、浏览器WebSocket的实现

index.html文件

<html> <head> </head> <body> <script type="text/javascript"> // 创建一个对象 var ws = new WebSocket('ws://localhost:3000'); // 连接一建立就触发onopen事件 ws.onopen = function(event) { // 发送消息 ws.send('WebSocket连接成功!'); }; // 得到消息 ws.onmessage = function(event) { console.log('server message: ', event.data) }; // 错误处理 ws.onerror = function(event) { console.log('server error message: ', event.data) }; </script> </body> </html>

2.2、用ws模块实现Node.js服务器

$mkdir node_modules $npm install ws@0.4.31

server.js文件 //引入ws,并初始化服务器

var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: 3000});

//连接建立成功,触发回调函数

wss.on('connection', function(ws) { ws.send('这是服务器发来的数据');//发送消息 ws.on('message', function(message) {//监听message事件 console.log('received: %s', message); }); });

用命令$node server.js启动Node.js服务器,然后在浏览器中打开index.html

本地HTML5 WebSocket是一个了不起的技术。 但是,WebSocket是一个协议,一个不断发展的标准,各浏览器的实现有所不同,这点要注意。

连接可能会经常丢失,需要重新建立,建议使用Socket.IO库

转载请注明原文地址: https://www.6miu.com/read-29830.html

最新回复(0)