WebSocket實現(xiàn)簡單客服聊天系統(tǒng)
一 需求
一個多商家的電商系統(tǒng),比如京東商城,不同商家之間的客服是不同的,所面對的用戶也是不同的。要實現(xiàn)這樣一個電商系統(tǒng)的客服聊天系統(tǒng),那該系統(tǒng)就必須是一個支持多客服、客服一對多用戶的聊天系統(tǒng)。
二 思路
使用 Node.js 搭建服務器,安裝 websocket 模塊、node-uuid模塊。通過在客服端和用戶端傳遞 客服ID 和 用戶ID 來進行消息的傳送。
三 具體實現(xiàn)
3.1 搭建 Node 服務器
參考本人前面的文章 《Centos6.8 下 Node.js 的安裝》。
3.2 安裝 ws 模塊、node-uuid 模塊
npm install ws npm install ws
3.3 創(chuàng)建 server.js
在項目里面新建一個server.js,創(chuàng)建服務,指定8906端口(下面是主要代碼,僅供參考)
const WebSocket = require('ws'); onst wss = new WebSocket.Server({ port: 8906 }); const uuid = require('node-uuid'); // 省略一些參數(shù)的定義 // 服務端處理連接 wss.on('connection', function(ws) { console.log('client [%s] connected', clientIndex); var connection_uuid = uuid.v4(); var nickname = "AnonymousUser" + clientIndex; clientIndex += 1; clients.push({ "id": connection_uuid, "ws": ws, "nickname": nickname }); //服務器收到消息時 ws.on('message', function(e) { var data = JSON.parse(e); var type = data.type; // 省略業(yè)務處理邏輯 }); // ws連接關閉時觸發(fā)的操作 ws.on("close", function () { websocketClose(); }); // 省略函數(shù) websocketClose()、wsSend()、socketClose 的定義 // 服務器關閉所觸發(fā)的操作 process.on("SIGINT", function () { console.log("SOCKET CLOSED!"); ("客服已關閉,請稍后再來"); process.exit(); }); });
3.4 創(chuàng)建 customer.html
該頁面是用戶頁面。在頁面上建立一個WebSocket的連接,并實現(xiàn)向服務器端發(fā)送消息(下面是主要代碼,僅供參考)
<script> //建立連接 const ws = new WebSocket("ws://22.33.66.88:8906"); var client_id = ''; //ws連接打開后的操作 ws.onopen = function (e) { //向服務器發(fā)送該ws連接的用戶信息 }; //收到消息處理 ws.onmessage = function (e) { // 省略 }; //ws連接出錯所觸發(fā)的操作 ws.onerror = function (e) { // 省略 }; //ws連接關閉時所觸發(fā)的操作 ws.onclose = function (e) { // 省略 }; // 省略函數(shù) appendLog()、sendMessage()、sendMessage2()、wsSendMessage() 的定義 </script>
3.5 創(chuàng)建 customerService.html
該頁面是客服頁面,類似于 customer.html,代碼方面可參考 customer.html
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
使用 Node.js 實現(xiàn)圖片的動態(tài)裁切及算法實例代碼詳解
這篇文章主要介紹了使用 Node.js 實現(xiàn)圖片的動態(tài)裁切功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09如何利用Node.js與JSON搭建簡單的動態(tài)服務器
這篇文章主要給大家介紹了關于如何利用Node.js與JSON搭建簡單的動態(tài)服務器的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Node.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-06-06詳解Node.js access_token的獲取、存儲及更新
本篇文章主要介紹了Node.js access_token的獲取、存儲及更新 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06在Linux系統(tǒng)中搭建Node.js開發(fā)環(huán)境的簡單步驟講解
這篇文章主要介紹了在Linux系統(tǒng)中搭建Node.js開發(fā)環(huán)境的步驟,Node使得JavaScript程序可以在本地操作系統(tǒng)環(huán)境中解釋運行,需要的朋友可以參考下2016-01-01Ubuntu 16.04 64位中搭建Node.js開發(fā)環(huán)境教程
如果想要在Ubuntu 16.04上安裝Node.js的話,這篇文章對你來說肯定很重要。Node.js從本質上來說就是一個運行在服務端上的封裝好了輸入輸出流的javascript程序。本文給大家詳細介紹了在Ubuntu 16.04 64位搭建Node.js開發(fā)環(huán)境的步驟,有需要的朋友們可以參考學習。2016-10-10實例分析nodejs模塊xml2js解析xml過程中遇到的坑
這篇文章主要介紹了實例分析nodejs模塊xml2js解析xml過程中遇到的坑,涉及nodejs模塊xml2js解析xml過程中parseString方法參數(shù)使用技巧,需要的朋友可以參考下2017-03-03