# koa-socketio-customer-service **Repository Path**: duans/koa-socketio-customer-service ## Basic Information - **Project Name**: koa-socketio-customer-service - **Description**: 使用koa结合socket.io实现的websocket智能客服系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-04 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebSocket智能客服系统 ![效果图](./static/images/design.png) ## 前置知识 - nodejs - koa - websocket - socket.io ## 核心代码 ### server.js ```js // io(端口号)会创建一个http服务 var io = require('socket.io')(80); // 监听链接是否建立成功 io.on('connection', function (socket) { // 监听客户端消息 socket.on('message', function (msg) { // 调用语义识别接口 utils.chatRobot(msg,(data)=>{ // 通过自定义事件, 发送消息给客户端 socket.emit('content', { msg:`${data.content}`}); }); }); socket.on('disconnect', function () { socket.emit('user disconnected'); }); }); ``` ### client.js ```js var socket = io('http://localhost/'); // 创建链接 socket.on('connect', function () { // 发送消息给服务端 // socket.send({name:'zs',age:30}); // 通过监听自定义事件, 接收服务端的消息 socket.on('content', function ({ msg }) { var html = `
智能客服: ${msg}
` $("#chat-content").append(html); // 滚动页面 autoScroll(); }); }); ``` ### 语义识别 > 语义识别使用的是第三方的在线接口 ```js // 导入http模块 const http=require('http'); // 导入querystring模块 const querystring=require('querystring'); /* 语义识别接口 http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词 */ function chatRobot(msg,callback){ // 构造查询字符串 => key=free&appid=0&msg=关键词 const query=querystring.stringify({ key:'free', appid:0, msg }); const url=`http://api.qingyunke.com/api.php?${query}`; http.get(url,(res)=>{ let rawData=''; // 开始接受数据 res.on('data',(chunk)=>{ rawData+=chunk; }); // 接受数据完毕 res.on('end',()=>{ // 处理数据=>{result:0,content:''} const data=JSON.parse(rawData); // 通过回调函数将结果返回外部 callback(data); }); // 异常处理 res.on('error',err=>{ console.log(err.message); }); }); } module.exports={ chatRobot } ```