国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序websocket聊天室的實現示例代碼

2024-07-22 01:19:06
字體:
來源:轉載
供稿:網友

背景

最近做了一個微信小程序的即時通訊功能,之前我也做過node.js的websocket服務,不過是在web端應用的socket.io服務。小程序本身對http、websocket等連接均有諸多限制,所以這次項目選擇了node.js自帶的ws模塊。

服務端

初始化一個node.js項目,引入ws模塊

const webSocket = require('ws');

創(chuàng)建websocket實例,并設置監(jiān)聽端口

const wss = new webSocket.Server({  port: 3001});

定義wss實例方法,實現socket監(jiān)聽和信息發(fā)布。下面貼上簡單的示例:

wss.on('connection', function connection(ws, req) {  console.log('連接開啟')    //發(fā)生錯誤  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('客戶端發(fā)來了一條消息')  });  //發(fā)送消息  ws.send('連接已開啟');  ws.send(id + '已連接')});

這樣,一個簡單的websocket服務就配置完成了。當然,問題遠遠不止這么簡單。要想在小程序中進行通信,還需要解決下面幾個問題。

域名

關于小程序服務端域名配置,小程序開發(fā)文檔中如下提到

小程序請求地址只支持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監(jiān)聽的端口號需要做一下代理,因為小程序如果不配置端口號時,所有請求的url都不可以帶端口號。

多房間通信

先看一下廣播的實現:

//廣播方法wss.broadcast = function broadcast(data) {  wss.clients.forEach(function each(client) {    client.send(data)  });};

wss對象的clients是一個存儲著所有socket連接對象的數組,每條連接對象都可以調用各自的send方法發(fā)送信息。

在此基礎上,我們可以進行一定的封裝,用一個唯一的標識符映射到每一條socket連接,這樣我們需要向特定的某個連接發(fā)送信息時,就可以找到該連接。

可以通過連接的url作為唯一標識:

 let sockets = {} wss.on('connection', function connection(ws, req) {    let id = req.url.slice(5);//截幾位字符串根據自己實際獲得的url來看    sockets[id] = ws;    ws.send(id + '已連接');    ...            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蓬安县| 稷山县| 镇康县| 高雄县| 射洪县| 安图县| 鹤山市| 根河市| 南投市| 东源县| 博客| 齐河县| 沅江市| 恩平市| 荃湾区| 巧家县| 庆云县| 克东县| 定结县| 林甸县| 噶尔县| 黔西县| 民勤县| 海盐县| 岳阳市| 天等县| 射洪县| 宁国市| 微山县| 平谷区| 两当县| 梅河口市| 阿图什市| 景东| 合江县| 定襄县| 淮阳县| 永仁县| 平凉市| 安义县| 长汀县|