文件目录
service.js webScoket服务(启动 node service.js)
fileServer.js 文件服务器 (启动 node fileServer.js)
im.html 页面如图
1.页面链接socket
if(window.WebSocket){
var ws = new WebSocket('ws://127.0.0.1:8001');
ws.onopen = function(e){
console.log("连接服务器成功");
ws.send(JSON.stringify({id:id}));
}
ws.onclose = function(e){
console.log("服务器关闭");
//重新连接
}
ws.onerror = function(){
console.log("连接出错");
}
ws.onmessage = function(e){
mess.innerHTML = "连接成功"
}
}
2.用node搭建的socket服务
//websocket服务
var ws = require("nodejs-websocket");
var fs = require('fs')
var fileName='';
path=[];
var obj = "";
console.log("开始建立连接...")
var broadcast = [];
//定义函数去掉重复广播
function uniqbroadcast(arr, name){
var hash = {};
return arr.reduce(function (item, next) {
hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);
return item;
}, []);
}
var server = ws.createServer(function(conn){
conn.on("text", function (str) {
console.log("收到的信息为:"+str);
obj = eval('(' + str + ')');
fileName = (obj.name ? obj.name : "");
if(obj.id && obj.msg){
//发送广播
broadcast.forEach(function(index){
index.conn.sendText(str);
})
}else{
//添加广播
if(broadcast.length > 0){
for(let i in broadcast){
broadcast[i].conn.sendText(str);
if(broadcast[i].id != obj.id){
broadcast.push({
id : obj.id,
conn : conn
})
}
}
}else {
broadcast.push({
id : obj.id,
conn : conn
})
}
conn.sendText(str)
}
})
conn.on("close", function (code, reason) {
console.log("关闭连接")
});
conn.on("error", function (code, reason) {
console.log("异常关闭")
});
}).listen(8001)
console.log("WebSocket建立完毕")