一 需求
一個多商家的電商系統,比如京東商城,不同商家之間的客服是不同的,所面對的用戶也是不同的。要實現這樣一個電商系統的客服聊天系統,那該系統就必須是一個支持多客服、客服一對多用戶的聊天系統。
二 思路
使用 Node.js 搭建服務器,安裝 websocket 模塊、node-uuid模塊。通過在客服端和用戶端傳遞 客服ID 和 用戶ID 來進行消息的傳送。
三 具體實現
3.1 搭建 Node 服務器
參考本人前面的文章 《Centos6.8 下 Node.js 的安裝》。
3.2 安裝 ws 模塊、node-uuid 模塊
npm install wsnpm install ws
3.3 創建 server.js
在項目里面新建一個server.js,創建服務,指定8906端口(下面是主要代碼,僅供參考)
const WebSocket = require('ws');onst wss = new WebSocket.Server({ port: 8906 });const uuid = require('node-uuid');// 省略一些參數的定義// 服務端處理連接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; // 省略業務處理邏輯 }); // ws連接關閉時觸發的操作 ws.on("close", function () { websocketClose(); }); // 省略函數 websocketClose()、wsSend()、socketClose 的定義 // 聊天服務器關閉所觸發的操作 process.on("SIGINT", function () { console.log("SOCKET CLOSED!"); ("客服已關閉,請稍后再來"); process.exit(); });});3.4 創建 customer.html
該頁面是用戶頁面。在頁面上建立一個WebSocket的連接,并實現向服務器端發送消息(下面是主要代碼,僅供參考)
<script> //建立連接 const ws = new WebSocket("ws://22.33.66.88:8906"); var client_id = ''; //ws連接打開后的操作 ws.onopen = function (e) { //向服務器發送該ws連接的用戶信息 }; //收到消息處理 ws.onmessage = function (e) { // 省略 }; //ws連接出錯所觸發的操作 ws.onerror = function (e) { // 省略 }; //ws連接關閉時所觸發的操作 ws.onclose = function (e) { // 省略 }; // 省略函數 appendLog()、sendMessage()、sendMessage2()、wsSendMessage() 的定義</script>3.5 創建 customerService.html
該頁面是客服頁面,類似于 customer.html,代碼方面可參考 customer.html
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答