您的位置:首页 > 移动开发 > 微信开发

微信小程序 websocket

2016-11-21 13:17 190 查看
目的:使用Node js 搭建websocket (wss微信需要安全的websocket),演示不同群组聊天

需要知道一点点node相关操作即可
node 服务端代码
var https=require('https');
var ws=require('ws');
var fs=require('fs');
var keypath=process.cwd()+'/server.key';//秘钥文件
var certpath=process.cwd()+'/public.pem';

var options = {
key: fs.readFileSync(keypath),
cert: fs.readFileSync(certpath)
};

var server=https.createServer(options, function (req, res) {
res.writeHead(403);//403即可
res.end("This is a WebSockets server!\n");
}).listen(65500);

var wss = new ws.Server( { server: server } );
wss.on('connection', function(conn) {
conn.on('message', function(message) {
//传输内容为JSON
var mData = JSON.parse(message);
if(mData && mData.EVENT) {
switch(mData.EVENT) {
case "LOGIN":
// 新用户加入
uid = mData.USER.UID;
//把加入用户的信息和连接关联起来
conn.UserId = uid;
conn.GroupId = mData.PKG.GROUPID;
//console.log('User:{\'uid\':' + newUser.uid + ',\'nickname\':' + newUser.nick + '}coming on protocol websocket draft ' + conn.protocolVersion);
console.log('connected user' + wss.clients.length);
console.log(uid+"///"+mData.PKG.GROUPID);
// 把新用户的信息广播给在线用户
for(var i = 0; i < wss.clients.length; i++) {
//同组的才广播
if(wss.clients[i].GroupId==mData.PKG.GROUPID){
wss.clients[i].send("new member");
}
}
break;
case "TEXT":
console.log(mData);
//用户发送内容
var content = mData.PKG.CONTENT;
//发给目标组
var gId = mData.PKG.GROUPID;
//发送给同组成员
for(var i = 0; i < wss.clients.length; i++) {
//发送给同组的所有成员
if(gId==wss.clients[i].GroupId){
wss.clients[i].send(content);
}
}
//SAVE DB
break;
default:
break;
}

} else {
console.log(mData);
}
});
conn.on('error', function() {
console.log(Array.prototype.join.call(arguments, ", "));
});
conn.on('close', function() {
console.log('someone offline')
});

});

node 客户端

var ws = new WebSocket("wss://www.x'x'x.com:65500/");

ws.onopen = function() {
alert("Opened");
ws.send('{"EVENT":"LOGIN","USER":{"UID":"123"},"PKG":{"GROUPID":112,"MESSAGE":"OK"}}');
};

ws.onmessage = function (evt) {
alert(evt.data);
};

ws.onclose = function() {
alert("Closed");
};

ws.onerror = function(err) {
alert("Error: " + err);
};
<!DOCTYPE html>
<html>
<body>
<h1>WebSocket</h1>
<script src="client.js"></script>
</body>
</html>

微信小程序测试:

wx.connectSocket({
url: WSS_URL
})
wx.onSocketOpen(function (res) {
wx.sendSocketMessage({
data: '{"EVENT":"' + `${mtype}` + '","USER":{"UID":"' + `${getApp().globalData.uid}` + '"},"PKG":{"GROUPID":112,"CONTENT":"'
+ `${value}` + '"}}'
})
})
wx.onSocketMessage(function (res) {
log(res.data)

})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息