IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> uniapp 使用 socket.io -> 正文阅读

[网络协议]uniapp 使用 socket.io

多客服接入(客户端):
客服端请不要参考该文档

Uni-app插件下载链接(兼容小程序):

https://ext.dcloud.net.cn/plugin?id=1461

npm i @hyoga/uni-socket.io --save 

连接时 : transports 设置为 [‘websocket’]

UIN-APP连接例子:

import io from '@hyoga/uni-socket.io'; 
const socket = io('http://服务器IP:端口号', {
  transports: [ 'websocket']  
});

PC版连接例子:
引入socketIo

<script src="socket.io.js"></script>

创建连接:

var socket = new io('http://服务器IP:端口号', {
    transports: [ 'websocket']  
});

监听事件:

//监听连接成功事件
socket.on('connect', function() {
     console.log("连接成功");
     //将自己注册到SOCKET
     socket.emit('conn',{ uid: "会员ID",userSig:"登录票据" })
});
//监听自己的注册状态,
//注册成功后才可接收消息
socket.on('conn', function (data) {   
    if(data[0] == 'ok'){
         console.log('注册成功' )
    }  else{
        console.log('注册失败' )
    }  
});
//监听断线重连
socket.on('reconnect', function() {
   console.log("重连成功");
});
//监听断线
socket.on('disconnect', function() {
   console.log("已下线");
});
//监听全部会员的上线广播
socket.on('login', function(data) {
   console.log("会员上线",data.uid);
});
//监听全部会员的下线广播
socket.on('loginout', function(data) {
   console.log("会员下线",data.uid);
});
//接收消息
socket.on('broadcastingListen', function (data) {
    for(i=0;i<data.length;i++){
        console.log(data[i])  //与你发送的msg 一致
    }
});
发送消息:

//单发
//msg可以自定义,你发什么样子,对方就收到什么样子
socket.emit("sendmsg",{
     uid: "接收人会员ID",
     //消息体
     msg : {
           magid:"消息ID",
           user_id:"我的ID",
          type:"message",
          content:"123",
          nickname:"我的昵称",
          head_img:"我的头像"
     }
})

//群发
//msg可以自定义,你发什么样子,对方就收到什么样子
socket.emit("sendall",{
     token: "鉴权token",
      //消息体
     msg : {
         msgid:"消息ID",
         type:"all",
         content:"通知内容"
     } 
})

注销socket
//退出登录,注销socket
socket.disconnect();
socket = null;

单线程3000人上限,需要多线程可以扩展部署
该组件只负责通讯。不会写入聊天记录,需要在发送消息前调用API写入消息记录

第二: API接口说明

获取登录票据:

没有登录票据是无法登录socket系统的,请调用接口5fdaaea1f1c35获取登录票据登录客服系统,请注意该票据10分钟内有效,而且只可以使用一次,如果重新登录需要重新获取票据

消息鉴权接口
在发送消息之前,你必须通过后端的提供的接口(5f5ee8e86c27b) 进行鉴权,鉴权成功后方可调用emit方法进行发送,
如果鉴权失败,你需要在聊天窗口的下方显示一条系统消息(提示错误信息),并终止发送
如果鉴权成功:组装消息并发送,参考发送消息实例中的代码:将鉴权返回的message值装入到msg字段,to_uid表示接收人uid ,直接使用后台数据,无需本地拼装

2,获取会话列表,也就是你和谁聊过天,聊天的主界面,接口是 5f6010f4df24a
3,获取两人的聊天记录: 5f601350edaa4
4,删除会话: 5f6019df45579
5,撤回消息: 5f601dd81d4da
:需要注意的是,如果你需要撤回消息,先调用接口后,你需要给对方发一个通知

socket.emit("sendmsg",{
     uid: "接收人会员ID",
     //消息体
     msg : {
           msgid:"消息ID",
           type:"recall",   
     }
})

直接发送的消息不会存入聊天记录

会话处理:

你若监听到来自客服回复的消息,请根据store_id 也就是门店ID来作为会话唯一标识,其中session_title用于更新会话内容,store_name和store_logo作为会话头像和名称,当然也可以用
nickname和head_img,

特别注意:

!!!不要直接回复消息,因为你不知道收件人是谁,必须先调用5f5ee8e86c27b接口后台才会分配一个客服给你 也就是是to_uid, 当你撤回消息时 要发给这个客服ID 而不是store_id

关于复杂消息类型中content的说明:
type=1 是图片类型,content传图片地址就可以了

type=2 是视频类型,content传视频地址就可以了

type=3 是商品类型 json内容如下,content要传递以下内容

{
    goods_id:"商品ID",
    sku_id:"规格ID"
}

后台会自动处理并且返回内容如下:请发送返回的content

{
    goods_id:"商品ID",
    name:"商品名称",
    thumb:"商品图片地址",
    sku:"SKU如 蓝色,大码",
    price:"商品价格如 100.00"
}

type=4 是订单类型 JSON内容如下,content 要传递如下内容:

{
    order_sn:"订单号",    
}

后端会处理好真正的content,返回内容如下:请发送返回的content

{
    order_sn:"订单号",
    payable_money:"应付款",
    status:"订单状态",
    goods:[{
        goods_id : "商品ID",
        goods_name : "商品名称",
        sku_name : "规格",
        goods_thumb : "商品图片",
       num : "数量",
       goods_money : "金额",
    }],
    info:{
        receiver_name : "收货人",
        receiver_mobile: "联系电话",
        province: "省",
        city: "市",
        district: "区",
        receiver_address: "详细地址",
        remark: "备注",
    }    
}

当PC客服回复你消息时 也遵循以上格式,保持一致

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:33:50  更:2022-02-19 01:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:04:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码