微信小程序微信小程序websocket聊天室的实现示例代码聊天室的实现示例代码
背景背景
最近做了一个微信小程序的即时通讯功能,之前我也做过node.js的websocket服务,不过是在web端应用的socket.io服务。小程序本身对http、websocket等
连接均有诸多限制,所以这次项目选择了node.js自带的ws模块。
服务端服务端
初始化一个node.js项目,引入ws模块
const webSocket = require('ws');
创建websocket实例,并设置监听端口
const wss = new webSocket.Server({
port: 3001
});
定义wss实例方法,实现socket监听和信息发布。下面贴上简单的示例:
wss.on('connection', function connection(ws, req) {
console.log('连接开启')
//发生错误
ws.on('error', function error(error) {
console.log('error', error);
});
//断开连接
ws.on('close', function close(close) {
console.log( '已关闭');
});
ws.on('message', function message(message) {
ws.send('客户端发来了一条消息')
});
//发送消息
ws.send('连接已开启');
ws.send(id + '已连接')
});
这样,一个简单的websocket服务就配置完成了。当然,问题远远不止这么简单。要想在小程序中进行通信,还需要解决下面几个问题。
域名域名
关于小程序服务端域名配置,小程序开发文档中如下提到
小程序请求地址只支持https或者wss协议,因此首先要配置的就是SSL证书。拿到SSL证书之后,在服务端做一下https的配置即可。
var fs = require('fs');
const options = {
key: fs.readFileSync('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'utf8'),//证书地址
cert: fs.readFileSync('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'utf8'),//证书地址
};
var https = require('https');
var server = https.createServer(options, app);
另外值得注意的是,websocket监听的端口号需要做一下代理,因为小程序如果不配置端口号时,所有请求的url都不可以带端口号。
多房间通信多房间通信
先看一下广播的实现:
评论0