【微信小程序】---Socket聊天功能实现

一、什么是socket?

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socke

本章案例中我们使用HTML5中的webSocket。

websocket是HTML5开始提供的一种浏览器与服务器进行双向通讯的网络技术。

使用websocket浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速的通道,两者之间就可以互相传送

好处:

  • 节省资源:互相沟通的Header是很小的 大概是2bytes。
  • 推送信息:不需要客户端请求,服务器可以主动传送数据给客户端

服务端代码

安装ws cnpm install ws -S

const WebSocket = require(‘ws‘);
//创建服务
const wss = new WebSocket.Server({ port: 8080 });

//当用户连接的时候回触发connection
wss.on(‘connection‘, (client) => {
   //接收客户端消息
   client.on(‘message‘, (data) => {
       //遍历所有用户,将接收到的消息发送给所有的用户
       wss.clients.forEach((item) => {
           if (item.readyState === WebSocket.OPEN) {
               item.send(data);
          }
      });
  });
});

客户端代码

相关API

  • wx.connectSocket:创建一个WebSocket 连接
  • wx.onSocketOpen:监听 WebSocket 连接打开事件
  • wx.onSocketMessage:监听 WebSocket接受到服务器的消息事件
  • wx.sendSocketMessage:通过 WebSocket 连接发送数据。需要先wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送
onLoad(){
     //链接socket
     wx.connectSocket({
       url: ‘ws://192.168.1.9:8080‘,
       header: {
           ‘content-type‘: ‘application/json‘
      },
       method: "get",
       success: (data) => {
           //如果链接成功,则监听 WebSocket 连接打开事件
           if (data.errMsg == "connectSocket:ok") {
               //监听 WebSocket 连接打开事件
this.handleSocketOpen();
          }
      }
  })
   //接收服务端传递到客户端的消息
   this.handleSocketMessage();
}
//监听 WebSocket 连接打开事件
handleSocketOpen(){
   wx.onSocketOpen(() => {
       //定义状态值,如果为true则表示监听成功
        this.flag = true
  })
},
//接收服务端传递到客户端的消息
handleSocketMessage(){
  wx.onSocketMessage((data) => {
     console.log(data);
  })
},
//向服务端发送消息
handleSend(e) {
   //如果监听WebSocket 连接打开事件成功则发送消息
  if (this.flag) {
      wx.sendSocketMessage({
          data: this.data.message,
          success: (data) => {
               console.log(data, 111);
          }
      })
  }
}

原文地址:https://www.cnblogs.com/yuanjili666/p/11683266.html

时间: 2024-11-09 09:23:50

【微信小程序】---Socket聊天功能实现的相关文章

微信小程序开发-蓝牙功能开发

0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数据帧格式的定义,当然这部分就不是本次博客的重点.1. 准备硬件 这里我准备了CH341SER这个作为USB转串口.用sscom5.13.1 串口工具.由于我不太懂硬件开发.硬件部分都是由公司其他人开发的.我只是负责把环境搭建起来.然后负责我的微信小程序开发. 2. 开发小程序简单讲解 onLoad

一号旺铺微信小程序三大新功能:可相互跳转、批量管理门店

可相互跳转.批量管理门店,小程序是抓住零售新机会的一把利器吗?一号旺铺专业.专注开发小程序,就微信小程序的三个功能与大家分享. 同一个公众号下关联的 10 个同主体小程序和 3 个非同主体小程序之间,可以调用接口直接相互跳转. 微信小程序新动向:可相互跳转.批量管理门店 可相互跳转.批量管理门店,小程序是抓住零售新机会的一把利器吗? 小程序到底能不能抓住零售新机会,成效还在验证中.不过为了实现这一目标,小程序又释放了一个重大功能. 6 月 21 日深夜,微信官方表示,与同一公众号关联的小程序之间

微信小程序人脸识别功能

本文档以微信小程序为例,微信小程序开发人脸核身功能需要两个申请:腾讯云申请人脸识别服务和小程序申请人脸识别服务(注意:只有符合以下条件的机构才能在小程序端申请) 政务:政府机构或事业单位金融:银行.保险医疗:公立医疗机构运营商:电信运营商教育:公立教育机构交通:航空.客运.网约车.交通卡.共享交通.轨道交通.租车旅游:酒店物流:快递.邮政.物流 主要参考文档: 1.腾讯云人脸核身文档 :https://cloud.tencent.com/product/faceid/developer 2.腾讯

微信小程序实现支付功能

小程序支付,没有封装支付代码:直接上一段可用的流程代码吧:微信小程序支付官网文档有详细的说明,这里我就不再赘述啦:客户端js: wx.request({ url:'https://www.xxxx.com/api/payfee.php',//改成你自己的链接 header:{ 'Content-Type':'application/x-www-form-urlencoded' }, method:'POST', success:function(res){ console.log(res.dat

微信小程序 五星评价功能

要实现的效果:点击到第几颗星,就要显示到第几颗星,///////////////// 接下来直接查看源码: <view class="l-evalbox row"> <text class="l-evaltxt">满意度:</text> <view class="l-evalist flex-1" bindtap="chooseicon"> <icon class=&quo

NopCommerce 4.2 之微信小程序 - 每日签到功能

/// <summary> /// 调用接口自动签到,并返回签到结果 /// </summary> /// <returns></returns> [Route("index")] [APIFilter(true, true)] public APIResult<object> index() { //设置为驼峰命名(即将实体全部首字母小写处理) var serializerSettings = new JsonSeriali

微信小程序评论/留言功能,附:前端+后端代码+视频讲解!

前端界面: 演示: <!-- 表单 --> <form bindsubmit="formSubmit"> <input type="text" name="liuyantext" placeholder='输入留言内容' class="input-style"/> <button formType="submit" class="btn" wx:

店铺无缝对接一号旺铺小程序 盘点微信小程序新增功能

前段时间,笔者写过一篇<不开发,商家店铺如何快速接入微信一号旺铺小程序>的文章.结果反响平平,无人问津.所以,笔者就在想,也许小程序真的大势已去. 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 但是,就在本人下定决心以后少关注小程序的当口,腾讯似乎终于觉醒了,张小龙也终于向现实低头妥协,微信官方宣布的小程序新增功能绝地反击,热乎了众多商家的心,也活跃了个人创业开发者的兴奋基因.其实,自小程序面市已来,其功能一直在不断完善

记录使用微信小程序的NFC和蓝牙功能读取15693芯片的开发历程

开发目标: (1) 对于Android手机,直接通过微信小程序调用手机的NFC功能,对15693协议的芯片进行读写操作: (2)对于苹果手机(及没有NFC模块的手机),通过微信小程序的蓝牙功能连接到蓝牙/NFC读写器,然后通过蓝牙发送指令操作读写器对15693协议的芯片进行读写操作. DAY #1 上午开了半天会,下午开始开发. 先开发简单的:直接通过Android手机的NFC模块读写芯片.开发思路如下: 1. 首先调用 wx.getHCEState(OBJECT), 判断设备是否支持NFC,如

微信小程序开源项目库汇总

微信小程序开源项目库汇总,里面集合了OpenDigg 上的优质的微信小程序开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 Wa-UI ★122 - 针对微信小程序整合的一套UI库 wx-charts ★105 - 微信小程序图表工具 wemark ★85 - 微信小程序Markdown渲染库 WeZRender ★36 - 微信小程序Canvas增强组件 wet