首先,简明说一下websocket和常见请求的区别和优点,
1.websocket只进行一次连接,就可以发送多次消息,免除了许多请求开销。(最大特点)
2.websocket服务端可以向客户端发送消息也可广播消息,客户端可以和服务器发送消息,间接和其他客户端发送消息。传统请求多为获取数据库数据。
因为websocket上述两个特点,它多被用于消息推送,客户端间的消息传输(聊天消息,对战消息,同步游戏等等),常见就是聊天室,同步游戏数据(棋牌类游戏,回合制游戏,实时游戏等)。
其次,node.js的websocket服务器构建:
1.下载nodejs-websocket依赖,
npm intsall nodejs-websocket2.node.js服务端代码
var ws = require("nodejs-websocket");
console.log("start connect...");
var server = ws.createServer(function(socket){
socket.on("text", function(str){
var str = JSON.parse(str);
console.log("message: " + str);
socket.send("copy that!");
});
socket.on("close", function(){
console.log("closed");
});
}).listen(9000);
第三,客户端构建:
客户端代码
var ws = new WebSocket("ws://192.168.1.49:9000");
ws.onopen = function(e){
console.log("connect success!");
ws.send(JSON.stringify({dst:101,data:"received!"}));
}
ws.onclose = function(e){
console.log("server closed!");
}
ws.onerror = function(e){
console.log("connect error!");
}
ws.onmessage = function(message){
console.log(message.data);
}以上就是基本的websocket构成。
第四,讨论如何使用websocket进行客户端通信。
1.在服务器端保存每个连接用户,保存其socket对象,标识等等。
2.通过标识区分用户,通过对应socket发送消息。
3.由此,客户端向服务器请求信息,那么使用的本身就是自己的socket,若是向另一个客户端发送消息,那么指定用户标识,使用其socket进行发送就能实现。客户端向所有用户分发数据,则变量标识,发送每个客户端的socket。
注:若有说的不妥当的地方,欢迎指正
版权声明:本文为qq_24802531原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。