服务端nodejs:/**
* Created by jhf on 14-10-13.
*/
var cons = new Array();
var userArray = new Array();
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({port:8080});
wss.on('connection',function(ws){
//从头中取出客户端标示userid,当然也可以得到客户端的ip地址
var userId = ws.upgradeReq.headers['userid'];
console.log('new connection successfully userId:'+userId);
cons.push(ws);
userArray.push(userId);
ws.on('message',function(message){
console.log(message);
for (var i=0; i<cons.length;i++) {
//判断userid是否为toUserId(发给指定的客户端)
var msgObj = JSON.parse(message);
if (userArray[i] == msgObj.toUserId) {
cons[i].send(message);
break;
}
}
});
ws.on('close',function(){
for (var i=0;i<cons.length;i++){
if (cons[i]==ws)cons.splice(i,1);
}
});
});
console.log('websocket-server running...');
客户端nodejs:
/**
* Created by jhf on 14-10-13.
*/
var WebSocket = require('ws')
,Options = require('options');
var options = new Options({"headers":{}});
options = {
"headers":{"userid":"abc"}
};
var ws = new WebSocket('ws://127.0.0.1:8080',options);
ws.on('open',function(ss){
var obj = {
"toUserIconUrl": "/api/getPicture/53c9e22cce37989659b24852",
"toUserName": "Fred",
"toUserId": "54237cb58c29a38f44362082",
"content": "测试消息",
"fromUserIconUrl": "/api/getPicture/53c0b7337a4dd8f77549838e",
"fromUserName": "Jin",
"fromUserId": "538aacd78016832f19000062",
"contentType": "text",
"time": (new Date()).getTime()
};
var str = JSON.stringify(obj);
console.log(str);
ws.send(str);
});
ws.on('message',function(message){
console.log('received: %s',message);
});
基本原理:
1,客户端连接到服务端的时候在header里面加入用户标示userid,用来判断哪个客户端连接到了服务端
2,服务端从header里面获取userid,在消息体中判断需要发送给哪个客户端(toUserId与header里面相等),将客户端发来的消息发送到指定客户端(网络上都是群发聊天室的例子居多,一对一聊天的很难找到)
另外,header中的id可以加密,消息内容也可以加密后发送,header是在websocket建立socket连接之前握手的时候指定的,一些加密的协议会在握手的时候进行处理,防止非法客户端连入服务端
分享到:
相关推荐
nodejs实现websocket服务与html+js聊天通信示例 1.先装一个nodeJs的模块,叫nodejs-websocket . 2.直接在nodeJs命令行中敲入:npm install nodejs-websocket回车就可以安装好了. 3.开始建立服务器了,因为有了nodejs...
nodejs实现websocket服务端和客户端,服务端会定时发送消息到客户端 下载文件 进入文件夹根目录 运行`npm install` 运行websocket服务端`node ws.js` 运行websocket客户端`node ws-client.js`
nodejs构造和服务端连接的客户端,用于构造长连接,发送并且接受数据,实现数据的传递
nodejs+websocket实现简单的多人聊天
使用 react 和 nodejs + websocket + mongoDB 实现的聊天系统.zip
首先,我需要用到node的nodejs-websocket模块 使用yarn进行安装 yarn add nodejs-websocket –save 当然,你也可以用npm进行安装 npm i nodejs-websocket –save 安装完毕之后,我们开始写服务端的代码,首先,...
nodejs-websocket 基于node创建websocket服务器 websocket 协议和 http 协议类似,http ...websocket 是双向通信的,只要 websocket 连接建立起来,可以由客户端给服务端发送数据,也可以由服务端主动给客户端发送数据
nodejs&websocket简易聊天demo
主要为大家详细介绍了Nodejs之TCP服务端与客户端聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用npm install nodejs-websocket安装,或将所有文件放在一个名为“ nodejs-websocket”的文件夹中,然后: var ws = require ( "nodejs-websocket" ) // Scream server example: "hi" -> "HI!!!" var server = ws...
Nodejs+websocket制作聊天源码
node-websocket-client, NodeJS的Web Socket客户端 一个 Prototype Web Socket 客户端实现 node.js 。测试 miksago/node-websocket-server v1.2.00.需要 nodejs 0.1.98或者更高版本。安装按如下方式使用 np
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据...基于Nodejs实现的客户端桌面端影音管理软件源码(服务端+客户端)-期末大作业.zip
基于nodejs-websocket模块、Socket.io库实现多人在线聊天室[丰富了上传图片,发送表情等实用聊天功能]
nodejs&websocket简易聊天demo
原生nodejs使用websocket代码分享.docx
毕业设计,基于Vue+NodeJS+WebSocket开发的网络聊天室在线聊天系统,内含NodeJS完整源代码,数据库脚本 基于WebSocket+Vue网络聊天室在线聊天系统设计毕业源码案例设计 开发软件:WebStorm Nodejs + WebSocket + ...
适用于nodeJS的Websocket客户端,最适合与。 根据版本13的制作的非常小但非常强大的库。 安装 npm install --save regoch-websocket-nodejs 网站 Websocket服务器功能 网络套接字版本: 13 子协议: 在房间里...