一、首先我们先了解一下websocket的使用:

1、创建websocket

const ws = new WebSocket("ws://192.168.31.136:9998/ws");

2、已连接上,使用 send() 方法发送用户信息给后端

ws.onopen = ()=>{

   ws.send("发送数据");

}

3、收到消息

ws.onmessage=(evt)=>{

  var received_msg = evt.data;

}

4、连接断开

ws.onclose=(evt)=>{

  console.log(evt)  

}

二、vue项目使用websocket思路.

1、登录成功后连接websocket。

为了防止刷新页面后websocket会断开连接,我们在main.js中添加如下代码。

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import { initWebSocket } from "./plugins/socket";
try {
const userInfo = JSON.parse(localStorage.getItem("userInfo"));
if (userInfo) {
store.commit("setUserInfo", userInfo);
initWebSocket();
}
} catch (error) {
console.log(error);
}
Vue.config.productionTip = false;
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");

  

2、收到消息后保存到vuex state状态中

3、聊天页面监听vuex state数据。

4、push进聊天记录数组。

以下是我简单封装的websocket方法:

import vuex from "../store";
let ws = null;
export function initWebSocket() {
let userInfo = vuex.state.userInfo;
// 创建websocket
ws = new WebSocket("ws://192.168.31.141:5566/ws");
// 连接成功发送用户信息给后端
ws.onopen = function() {
let msg = {
token: userInfo.token,
type: 1,
msgType: 0,
sendUserId: userInfo.id
};
ws.send(JSON.stringify(msg));
};
// 收到消息保存到vuex
ws.onmessage = function(event) {
vuex.commit("setMsg", event.data);
console.log(event);
};
// 断开连接后进行重连
ws.onclose = function(event) {
console.log(event);
let userInfo = vuex.state.userInfo;
if (userInfo) {
setTimeout(() => {
initWebSocket();
}, 5000);
}
};
}
// 发送消息(可以引入使用,也可以挂在到Vue原型上面使用)
export function webSocketSend(data) {
if (ws.readyState === 1) {
ws.send(JSON.stringify(data));
}
}

 希望能帮助到大家!

  

vue项目使用websocket做聊天项目总结的更多相关文章

  1. 一、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-项目引言

    项目文章索引 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展面板的 ...

  2. Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓

    要说到微信,我相信是个人都应该知道,几乎人人都会安装这款社交APP吧,它已经成为了我们生活中不可缺少的一份子. 我记得我上大学那会刚接触Java,做的第一个小项目就是基于J2SE的聊天室,使用Java ...

  3. java版的类似飞秋的局域网在线聊天项目

    原文链接:http://www.cnblogs.com/wangleiblog/articles/5323305.html 转载请注明 最近在弄一个java版的局域网在线聊天项目,功能跟飞秋差不多.p ...

  4. vue菜鸟从业记:完成项目最后一公里之真机测试和打包上线

    最近我朋友王小闰他们公司的项目开发已经进入收尾阶段,前后端并行开发的差不多了,联调也调过了,上篇文章里也讲到了,所谓联调,就仿佛在说“我也不知道我的接口文档写的对不对,我们验证一下吧?我也不知道我的数 ...

  5. 【vue学习】vue 2.0版本以上创建项目的的步骤

    一.环境准备 1.vue项目依赖 node.js npm,需要先安装node和npm,先检查本地是否安装node.npm 快捷键win+r   输入cmd  弹出操作框,如果电脑已经安装git,直接右 ...

  6. 用 Vue 改造 Bootstrap,渐进提升项目框架[转]

    GitChat 作者:Meathill 原文:用 Vue 改造 Bootstrap,渐进提升项目框架 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 [不要错过文末彩蛋] 前言 Vue ...

  7. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  8. 用 Vue 改造 Bootstrap,渐进提升项目框架

    前言 Vue 横空出世,以迅雷不及掩耳之势横扫前端界,俨然有当年 jQuery 之势.我认为 Vue 成功的关键在于三点: 学习曲线平缓,有点经验的前端基本上一天就能看完文档,然后就可以上手操作. 上 ...

  9. 基于Vue、web3的以太坊项目开发及交易内幕初探 错误解决总结

    基于Vue.web3的以太坊项目开发及交易内幕初探 本文通过宏观和微观两个层面窥探以太坊底层执行逻辑. 宏观层面描述创建并运行一个小型带钱包的发币APP的过程,微观层面是顺藤摸瓜从http api深入 ...

随机推荐

  1. 寒哥教你学iOS - 经验漫谈

    http://www.jianshu.com/p/cb54054d3add 寒哥教你学iOS - 经验漫谈 字数2848 阅读1896 评论19 喜欢43 顺便来个广告 iOS开发者 群1734993 ...

  2. Tcp之双向通信

    TestServer.java package com.sxt.tcp; /* * 服务端 */ import java.io.DataInputStream; import java.io.Data ...

  3. qt中窗口绘制——图片的绘制

    在qt 中,QPixmap 用于表示一张图片,支持png,jpg格式的加载. QPixmap pm("c:/test.png"); 或者 QPixmap pm; pm.load(& ...

  4. Android系列之Android 命令行手动编译打包详解

    Android 命令行手动编译打包过程图 [详细步骤]: 1使用aapt生成R.java类文件:  例:  E:\androidDev\android-sdk-windows2.2\tools> ...

  5. python环境测试MySQLdb、DBUtil、sqlobject性能

    python环境测试MySQLdb.DBUtil.sqlobject性能 首先介绍下MySQLdb.DBUtil.sqlobject: (1)MySQLdb 是用于Python连接Mysql数据库的接 ...

  6. 关于Java语言for循环内外变量定义的问题

    今天看书时,看到一个代码,一个在循环外面没有用的变量,后即有了我的问题,在后面: 我的问题: 变量循环内定义,例如:while(true){String splitStr = null;}这“些”个s ...

  7. Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能

    在实际的开发中,我们市场会遇到这样的情况:点击某图片,浏览某列表(某列表详情)中的所有图片数据,当然,这些图片是可以放大和缩小的,比如我们看下百度贴吧的浏览大图的效果:  链接 这种功能,在一些app ...

  8. python基础之内置装饰器

    装饰器 简介 功能与格式 内置装饰器 @classmethod @propertry @staticmethod 其它 ---------------------------------------- ...

  9. xshell评估期已过怎么办

    重新下载更新即可,不要看到英文一脸懵逼,直接在页面中有红色*号的地方输入个人信息,licensetype 必须选 Home and School use(家庭和个人使用),最主要的是输入邮箱(必须是个 ...

  10. HBuider快捷键

    朋友推荐用Hbuilder编辑器,看了下Hbuilder官网和那视频,感觉牛逼哄哄的, 自己也就体验了一下,打开Hbuilder的快捷键列表,每个快捷键都体验了一下,以下展示出来的,每一个都是精华,每 ...