简单开始
2.安装ws模块
ws:是nodejs的一个WebSocket库,可以用来创建服务。
3.server.js
在项目里面新建一个server.js,创建服务,指定8181端口,将收到的消息log出来。
4.建立一个client.html。
在页面上建立一个WebSocket的连接。用send方法发送消息。
页面:
简单开始
2.安装ws模块
ws:是nodejs的一个WebSocket库,可以用来创建服务。
3.server.js
在项目里面新建一个server.js,创建服务,指定8181端口,将收到的消息log出来。
4.建立一个client.html。
在页面上建立一个WebSocket的连接。用send方法发送消息。
页面:
运行之后如下,服务端即时获得客户端的消息。
上面的例子很简单,只是为了演示如何运用nodejs的ws创建一个WebSocket服务器。且可以接受客户端的消息。那么下面这个例子演示股票的实时更新。客服端只需要连接一次,服务器端会不断地发送新数据,客户端收数据后更新UI.页面如下,有五只股票,开始和停止按钮测试连接和关闭。
服务端:
1.模拟五只股票的涨跌。
2.连接建立之后就开始更新数据
}
}
var clientStockUpdater = setInterval(function () {
sendStockUpdates(ws);
},1000);
ws.on('message',function (message) {
var stockRequest = JSON.parse(message);//根据请求过来的数据来更新。
console.log("收到消息",stockRequest);
clientStocks = stockRequest['stocks'];
sendStockUpdates(ws);
});
客户端:
建立连接:
onopen直接只有在连接成功后才会触发,在这个时候将客户端需要请求的股票发送给服务端。
updataUI();
运行效果如下:只需要请求一次,数据就会不断的更新,效果是不是很赞,不用轮询,也不用长连接那么麻烦了。文章末尾会附上所有源码。
(美股的涨跌和A股的颜色是反的,即红跌绿涨)
上面的例子是连接建立之后,服务端不断给客户端发送数据。接下来例子是一个简单的聊天室类的例子。可以建立多个连接。
1.安装node-uuid模块,用来给每个连接一个唯一号。
2.服务端消息发送
消息类型分notification和message两种,前者是提示信息,后者是聊天内容。消息还包含一个id、昵称和消息内容。在上一节有学习到readyState有四个值,OPEN表示连接建立可以发送消息。如果页面关闭了,为WebSocket.CLOSE。
3.服务端处理连接
每新增加一个连接,都会发送一条匿名用户的加入的提示消息,如果消息中带有“/nick” 认为这一个修改昵称的消息。然后更新客户端的昵称。其他都会当做聊天消息处理。
处理连接关闭:
4.客户端
js:
运行结果:
这种实时响应的体验简直不能太爽,代码也清爽了,前端体验也更好,客户端不用一直发请求,服务端不用等着被轮询。
小结:上面例子的代码都很好理解,接下来学习WebSocket协议。