WebSocket实现简单客服聊天系统


Posted in Javascript onMay 12, 2017

一 需求

一个多商家的电商系统,比如京东商城,不同商家之间的客服是不同的,所面对的用户也是不同的。要实现这样一个电商系统的客服聊天系统,那该系统就必须是一个支持多客服、客服一对多用户的聊天系统。

二 思路

使用 Node.js 搭建服务器,安装 websocket 模块、node-uuid模块。通过在客服端和用户端传递 客服ID 和 用户ID 来进行消息的传送。

三 具体实现

3.1 搭建 Node 服务器

参考本人前面的文章 《Centos6.8 下 Node.js 的安装》。

3.2 安装 ws 模块、node-uuid 模块

npm install ws
npm 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
js getElementsByTagName的简写方式
Jun 27 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
May 26 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
微信小程序之数据缓存的实例详解
Sep 29 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 Javascript
vue2.0结合Element实现select动态控制input禁用实例
May 12 #Javascript
详解微信小程序 相对定位和绝对定位
May 11 #Javascript
Vue通过input筛选数据
Oct 26 #Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 #Javascript
jQuery遮罩层实例讲解
May 11 #jQuery
在JS中如何把毫秒转换成规定的日期时间格式实例
May 11 #Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 #Javascript
You might like
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
JavaScript 指导方针
2007/04/05 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
最新大学生创业计划书写作攻略
2014/04/02 职场文书
护校行动方案
2014/05/31 职场文书
应届大专生求职信
2014/06/26 职场文书
授权委托书公证
2014/09/14 职场文书
个人总结与自我评价
2015/02/14 职场文书
博士生专家推荐信
2015/03/25 职场文书
辩护词范文大全
2015/05/21 职场文书