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);
还值得注意的是,侦听端口号需要作为代理,因为如果没有配置端口号,则所有请求的URL都不能携带端口号。
多房间交流
首先看广播的实施:

//广播方法 wss.broadcast = function broadcast(data) { wss.clients.forEach(function each(client) { client.send(data) }); };
wss对象是一个存储所有连接对象的数组,每个连接对象都可以调用其自己的send方法来发送信息。
在此基础上,我们可以执行某些封装并为每个连接映射一个唯一的标识符,以便当我们需要将信息发送到特定的连接时,我们可以找到该连接。
连接的网址可用作唯一标识符:
let sockets = {} wss.on('connection', function connection(ws, req) { let id = req.url.slice(5);//截几位字符串根据自己实际获得的url来看 sockets[id] = ws; ws.send(id + '已连接'); ...
每次客户端连接时微信小程序云开发实现聊天室,URL后面都会拼接一个唯一的ID,并在服务器端获取req.url,并截取字符串以获取唯一的ID,并将连接对象存储在全局,以便在需要时使用。

在此基础上,您可以继续封装诸如加入会议室,离开会议室,在会议室中进行通信以及与特定用户私下聊天之类的功能。一般来说,它是send方法的封装。值得注意的是,send方法只能发送一个字符串,并且需要将json对象转换为字符串,然后传递给send。
以下是私人聊天的示例:
wss.notice = function notice(id, data, ws) { // 向指定id发送 try { ws.send('正在发送...') var notice = JSON.stringify({ type: 'notice', data: data }) let target = sockets[id] if (target) { target.send('收到一条新消息') target.send(notice) } else { ws.send('目标信道已关闭') } } catch (err) { console.log(err) } }
以上是在微信小程序中实现聊天室的方法。我相信在我们的日常工作中可能会看到或使用一些知识点。希望您可以通过本文了解更多信息。有关更多详细信息,请随时关注Yisu 。