websocket实现在线聊天,websocket实现简单的聊天

  websocket实现在线聊天,websocket实现简单的聊天

  这篇文章主要利用websocked建立长连接,利用状态管理全局通信的特性,以及手表,计算机函数监听消息变化,并驱动页面变化实现实时聊天,感兴趣的可以了解一下

  

目录

   前言一、效果如图二、具体实现步骤1.引入vu ex2。网络瘫痪实现总结

  

前言

  这篇文章主要利用websocked建立长连接,利用状态管理全局通信的特性,以及手表,计算机函数监听消息变化,并驱动页面变化实现实时聊天。

  

一、效果如图

  

二、具体实现步骤

  

1.引入Vuex

  代码如下(示例):

  //安装状态管理

  新公共管理安装状态管理

  //main.js中引入

  从导入存储。/商店

  新Vue({

  埃尔: #app ,

  路由器,

  店,

  render: h=h(App)

  })

  我对状态管理进行了简单的封装,如下图,各位小伙伴可以按照自己使用的习惯进行。

  

2.webscoked实现

  网络瘫痪实现主要分为一下几个部分:

  建立连接

  发送心跳包

  失败或者出错之后重新链接

  常量状态={

  url: ,

  webSocket: null,

  lockReconnect: false,

  消息列表:[],

  msgItem: {},

  pingInterval: null,

  超时:空,

  }

  常量突变={

  【类型. INIT_WEBSOCKET](状态,数据){

  state.webSocket=data

  },

  【类型. LOCK_RE_CONNECT](状态,数据){

  state.lockReconnect=data

  },

  【类型. SET_PING_INTERVAL](状态,数据){

  state.pingInterval=data

  },

  【类型. SET_MSG_LIST](状态,数据){

  state.messageList.push(数据)

  state.msgItem=data

  },

  }

  常量操作={

  initWebSocket({ state,commit,dispatch,rootState }) {

  if (state.webSocket) {

  返回

  }

  const real URL=WSS _ URL根状态。医生基本信息。代币

  const webSocket=新WebSocket(realUrl)

  webSocket.onopen=()={

  console.log(建立链接);

  派遣("心脏检查")

  }

  webSocket.onmessage=e={

  console.log(接收到消息,e);

  尝试{

  if(类型e . data=== string e . data!==PONG) {

  let res=JSON.parse(e.data)

  console.log(接收到内容,RES);

  提交(设置消息列表,res)

  }

  } catch(错误){}

  }

  webSocket.onclose=()={

  console.log(关闭);

  派遣("重新连接")

  }

  webSocket.onerror=()={

  console.log(失败);

  派遣("重新连接")

  }

  提交( INIT_WEBSOCKET ,WEBSOCKET)

  },

  //心跳包

  heartCheck({ state,commit }) {

  console.log(state, state );

  const { webSocket }=state

  const ping interval=setInterval(()={

  if (webSocket.readyState===1) {

  webSocket.send(PING )

  }

  }, 20000)

  提交(设置PING间隔,PING间隔)

  },

  //重新链接

  重新连接({状态,提交,分派}) {

  if (state.lockReconnect) {

  返回

  }

  提交( INIT_WEBSOCKET ,null)

  提交(锁定重新连接,真)

  setTimeout(()={

  分派( initWebSocket )

  提交( LOCK_RE_CONNECT ,false)

  }, 20000)

  },

  }

  const getters={

  web套接字:state=state。web套接字,

  消息列表:状态=状态。消息列表,

  msgItem: state=state.msgItem,

  }

  导出默认值{

  命名空间:对,

  状态,

  行动,

  突变,

  吸气剂

  }

  页面获取

  方法:{

  .mapActions(webSocket ,[initWebSocket , close]),

  pushItem(项目){

  const initMsg=item

  这个。msglist。push(initMsg);

  }

  }

  已安装(){

  这个。初始化web套接字();

  }

  观察:{

  msgItem:函数(项目){

  this.pushItem(项目);

  }

  },

  计算值:{

  .mapGetters(webSocket ,[messageList , msgItem]),

  },

  用户界面界面

  li v-for=(item,I)in msgList :key= I class= msgBox /Li

  webscoked实现思想的解释

  1.首先在操作中创建一个ws链接。

  2.利用watch属性监控页面中状态对应消息的变化,接收到新消息后,改变页面显示的消息列表,利用双向绑定实现页面的自动更新。

  3.发送消息时调用后端接口,将新消息插入页面显示的消息列表中。

  4.由于ws是一个长链接,一旦建立就不会轻易被破坏,所以只要接收到后端推送的消息,判断是否有消息内容,当有消息内容时,只需要改变状态中的消息列表,页面就会根据watch属性自动更新,完美实现了即时通讯的功能。

  

总结

  这就是这篇关于websocket Vuex实现一个实时聊天软件的文章。更多相关websocket Vuex实时聊天内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: