Node + H5 + WebSocket + Koa2 實現簡單的多人聊天

來源:互聯網
上載者:User

標籤:script   node   協議   console   lan   let   發送   ons   Koa   

伺服器代碼  ( 依賴於 koa2,  koa-websocket )

/* 執行個體化外部依賴 */let Koa = require("koa2");let WebSocket = require("koa-websocket");/* 執行個體化 WebSocket, 執行個體化儲存所有上線文數組 並分配監聽的連接埠 */let app = WebSocket(new Koa());let ctxs = [];app.listen(80);/* 實現簡單的接發訊息 */app.ws.use((ctx, next) => {    ctxs.push(ctx);    ctx.websocket.on("message", (message) => {        console.log(message);        for(let i = 0; i < ctxs.length; i++) {            if (ctx == ctxs[i]) continue;            ctxs[i].websocket.send(message);        }    });});

前端代碼 ( 該頁面可同時開啟多個進行聊天 )

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <input type="text" id="content" />    <input type="button" value="發送" id="send" /></body><script type="text/javascript">    /* 封裝 WebSocket 執行個體化的方法  */    var CreateWebSocket = (function () {        return function (urlValue) {            if(window.WebSocket) return new WebSocket(urlValue);            if(window.MozWebSocket) return new MozWebSocket(urlValue);            return false;        }    })();    /* 執行個體化 WebSocket 連線物件, 地址為 ws 協議 */    var webSocket = CreateWebSocket("ws://localhost");    /* 接收到服務端的訊息時 */    webSocket.onmessage = function (msg) {        console.log("服務端說:" + msg.data);    };    /* 關閉時 */    webSocket.onclose = function () {        console.log("關閉串連");    };    /* 發送訊息 */    document.getElementById("send").onclick = function () {        var str = document.getElementById("content").value;        webSocket.send(str);    }</script></html>

 

Node + H5 + WebSocket + Koa2 實現簡單的多人聊天

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.