WebSocket 消息推送接口

WebSocket服务基于 socket.io

如何使用

Javascript客户端(index.html)

<script src="/javascripts/socket.io.slim.js"></script>
<script>
  var socket = io('http://192.168.4.94:3000'[, options]);
 
  console.log(socket.id); // undefined
 
  socket.on('connect', () => {
    console.log(socket.id); // 'G5p5...'
  });
</script>


由于 socket.io 本身的特性,决定它无法使用原生HTML5WebSocket连接方式来连接。以下为官网的说明,可点击此处查看更多详情。

Socket.IO is NOT a WebSocket implementation. Although Socket.IO indeed uses WebSocket as a transport when possible, it adds some metadata to each packet: the packet type, the namespace and the ack id when a message acknowledgement is needed. That is why a WebSocket client will not be able to successfully connect to a Socket.IO server, and a Socket.IO client will not be able to connect to a WebSocket server either.

几个事件

示例代码中,默认WebSocket连接对象为socket

监听事件

  • connect

在连接服务成功(包括成功重新连接)后触发。

socket.on('connect', () => {
  // ...
});
 
// 注意:不要在 connect 事件中注册事件
// 防止重连时重复注册事件
socket.on('myevent', () => {
  // ...
});
  • connect_error

当连接服务出错时触发。

socket.on('connect_error', (error) => {
  // ...
});
  • reconnect_failed

当重连次数超过设定的次数后触发。

socket.on('reconnect_error', (error) => {
  // ...
});
  • user_list

当有新用户连入服务时触发,将返回当前连接服务的所有用户信息。

socket.on('user_list', function (data) {
  console.log('user_list');
  console.log(data);
});
  • receive_message

当接收到其他用户推送的消息时,将触发该事件。

socket.on('receive_message', function (data) {
  console.log('receive_message');
  console.log(data);
});


接收到的数据(data),数据结构如下:

  • data (Object) 推送的消息内容
  • selfToken (String) 推送消息的用户的token
  • userName (String) 推送消息的用户姓名

主动触发事件

  • user_login

获取到相关的用户信息后,向服务注册用户信息。

js true <![CDATA[socket.emit('user_login', { plat: plat, // 所在平台,暂时没有限制平台名称,可选值为 web 、android... socketId: socket.id, // WebSocket 的唯一标识符。connect事件触发后可得到,并在reconnect事件发生后更新。 tokenId: tokenId, // 自定义的用户唯一标识 userName: userName // 用户名称 }[, function (data) { // 可选参数 // 得到成功推送消息给服务器的消息 console.log(data); }]);]]>


在不同平台连接服务时,请填写对应的平台标识。tokenId可取用户的主键(F_UserId)。

  • sendMsg

向指定用户推送消息。

js true <![CDATA[socket.emit('sendMsg', { tokens: [tokenId1,tokenId2,...], // 消息推送对象的 tokenId 数组 data: msg, // 推送的消息内容,可以为字符串,也可以为 Object 对象... selfToken: tokenId //推送者的 tokenId }[, function (data) { // 可选参数 // 得到成功推送消息给服务器的消息 console.log(data); }]);]]>


点击此处查看更多预设事件。

接口

  • [POST] /api/sendMsg

向指定用户推送消息。

参数

字段类型描述
tokensString[]消息推送对象的tokenId数组
dataObject推送的消息内容,可以为字符串,也可以为Object对象...
selfTokenString推送者的tokenId

请求结果

字段类型描述
responseCodeNumber消息推送响应状态码
dataString成功返回的消息

其他语言客户端连接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值