亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

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

2020-03-21 16:02:15
字體:
來源:轉載
供稿:網友

背景

最近做了一個微信小程序的即時通訊功能,之前我也做過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服務就配置完成了。當然,問題遠遠不止這么簡單。要想在小程序中進行通信,還需要解決下面幾個問題。

域名

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

微信小程序,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都不可以帶端口號。

多房間通信

先看一下廣播的實現:

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

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

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

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

 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,并將該連接對象存儲在全局的sockets下以便需要時使用。

在此基礎上,可以繼續封裝諸如加入房間、離開房間、房間內通信、向特定用戶私聊等功能,總體來說是對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)  }}

到這里,一個簡單的聊天室服務端配置就基本完成了。

最終作品效果如下:

微信小程序,websocket,聊天室,代碼

部分代碼細節,請觀眾老爺們移步 微信小程序中聊天室的服務端和客戶端配置示例 ^.^

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久999| 成人春色激情网| 久久九九全国免费精品观看| 久久免费在线观看| 精品久久久久久久久久久久久| 欧美—级a级欧美特级ar全黄| 亚洲福利视频专区| 亚洲在线www| 国产丝袜一区二区三区| 尤物yw午夜国产精品视频| 国产精品成人品| 色狠狠av一区二区三区香蕉蜜桃| 78m国产成人精品视频| 91国产一区在线| 久久久久久国产免费| 久久久亚洲国产天美传媒修理工| 欧美性猛交丰臀xxxxx网站| 日韩中文在线中文网三级| 欧美精品成人在线| 精品美女国产在线| 亚洲综合在线中文字幕| 精品久久久久久中文字幕一区奶水| 456亚洲影院| 国产精品亚洲欧美导航| 日韩视频中文字幕| 69久久夜色精品国产7777| 中文在线不卡视频| 国产精品美女无圣光视频| 亚洲男人天堂手机在线| 韩国国内大量揄拍精品视频| 亚洲人成毛片在线播放| 91久久久久久久久久久久久| 中文字幕成人在线| 91在线无精精品一区二区| 亚洲www视频| 国产精品视频公开费视频| 欧美黄色免费网站| 久久久久久久久久国产| 一本大道久久加勒比香蕉| 日韩欧美成人精品| 成人久久一区二区| 精品伊人久久97| 亚洲精品91美女久久久久久久| 在线观看免费高清视频97| 国产精品视频一| 91在线看www| 日日狠狠久久偷偷四色综合免费| 亚洲国产成人精品电影| 国产亚洲精品久久久久久777| 日韩中文在线中文网在线观看| 亚洲国产成人av在线| 欧美孕妇孕交黑巨大网站| 热门国产精品亚洲第一区在线| 日韩欧美成人免费视频| 在线观看欧美www| 国产亚洲福利一区| 国产一区二区视频在线观看| www高清在线视频日韩欧美| 日韩高清中文字幕| 欧美一区二区大胆人体摄影专业网站| 日韩精品视频在线免费观看| 国产丝袜一区二区三区免费视频| 97视频色精品| 国产精品第2页| 国产xxx69麻豆国语对白| 亚洲无亚洲人成网站77777| 亚州精品天堂中文字幕| 91国内产香蕉| 成人a视频在线观看| 欧美精品一二区| 欧美精品一本久久男人的天堂| 亚洲国产成人精品女人久久久| 欧美黄色片视频| 97久久精品在线| 91精品国产91久久久久久不卡| 2019中文字幕在线| 日韩精品在线视频美女| 午夜精品国产精品大乳美女| 宅男66日本亚洲欧美视频| 欧美亚洲午夜视频在线观看| 国产成人精品电影| 国语自产偷拍精品视频偷| 亚洲黄一区二区| 久久露脸国产精品| 午夜免费日韩视频| 在线看片第一页欧美| 亚洲成av人片在线观看香蕉| 国产精品一区二区三区久久久| 日韩av在线免播放器| 欧美精品久久久久久久久久| 亚洲一区中文字幕在线观看| 97国产一区二区精品久久呦| 国产精品免费一区豆花| 久久激情视频免费观看| 国产+人+亚洲| 亚洲网站在线观看| 久久久免费精品| 成人免费福利在线| 91国产视频在线播放| 国产这里只有精品| 一区二区三区无码高清视频| 欧美高清视频在线| 日本午夜精品理论片a级appf发布| 成人在线小视频| 午夜精品一区二区三区在线视频| 精品中文字幕视频| 91麻豆桃色免费看| 国产91精品高潮白浆喷水| 久久99热精品| 爽爽爽爽爽爽爽成人免费观看| 国产精品香蕉av| 95av在线视频| 国产综合在线观看视频| 在线视频精品一| 欧美老妇交乱视频| 久久91精品国产91久久久| 国产一区二区三区精品久久久| 国产精品av在线| 久热精品在线视频| 国产精品一区二区三区久久久| 欧美中文字幕精品| 亚洲va欧美va国产综合剧情| 青青草原一区二区| 国产精品一区二区性色av| 国产亚洲欧美另类中文| 国产精品免费视频xxxx| 成人伊人精品色xxxx视频| 亚洲成人动漫在线播放| 久久久久女教师免费一区| 亚洲成色999久久网站| 日韩一区二区三区在线播放| 久久在精品线影院精品国产| 国产精品av电影| 不卡av在线网站| 欧美日韩激情小视频| 国产精品久久久| 国产精品综合不卡av| 日韩不卡中文字幕| 久久av中文字幕| 欧美另类老女人| 这里只有精品视频在线| 亚洲激情免费观看| 91欧美精品成人综合在线观看| 亚洲视频在线播放| 欧美性开放视频| 欧洲成人在线观看| 日韩在线视频中文字幕| 亚洲va欧美va国产综合久久| 亚洲成年网站在线观看| 国产精品国产亚洲伊人久久| 日韩av在线最新| 亚洲精品国产电影| 不卡中文字幕av| 在线精品国产成人综合| 欧美日韩综合视频网址| 一区二区三区久久精品| 成年人精品视频| 91探花福利精品国产自产在线| 国精产品一区一区三区有限在线| 欧美一区二区影院| 国产在线精品一区免费香蕉| 国产精品香蕉国产| 亚洲男人的天堂在线播放| 黑人巨大精品欧美一区二区一视频|