美文网首页
学习websocket

学习websocket

作者: zbinf | 来源:发表于2017-11-14 09:30 被阅读0次

一、什么是websocket

websocket是一种网络通信协议。

由于http协议只能由客户端来发起请求,这个缺陷导致我们在做聊天功能,只能用轮询的方法。这样既麻烦效率又低。于是就有了websocket协议。

特点:客户端可以直接向服务端发起请求,服务端可以主动向客户端发起请求。

二、客户端如何使用

var ws = new WebSocket("wss://echo.websocket.org");

ws.onopen = function(evt) { 
  console.log("连接websocket");
};

ws.onmessage = function(evt) {
  console.log( "收到的消息: " + evt.data);
};

ws.onclose = function(evt) {
  console.log("关闭连接");
};  
  
// 发送消息
ws.send('Hello Server!');

使用sockjs-client

SockJS是一个浏览器JavaScript库,它提供了一个类似于网络的对象。SockJS提供了一个连贯的、跨浏览器的Javascript API,它在浏览器和web服务器之间创建了一个低延迟、全双工、跨域通信通道。
在后台,SockJS尝试首先使用原生的WebSockets。如果它失败了,它可以使用多种特定于浏览器的传输协议,并通过类似于网络的抽象来呈现它们。
SockJS旨在为所有现代浏览器和不支持WebSocket协议的环境工作——例如,在限制公司代理的后面。

简单来说SockJS是封装websocket协议的js库。

客户端使用:SockJS-client,
服务端可使用:SockJS-node

用法:

sockjs-client 的用法跟WebSocket协议的用法基本一样:

1.项目里面下载引用SockJS-client

npm install sockjs-client --save
import Sock from 'sockjs-client'

2.连接

const sock = new Sock(url);
// 连接成功后的回调函数
sock.onopen = () => {
  console.log('连接成功');
};

// 监听接受到服务器的消息
sock.onmessage = (event) => {
  console.log('收到的消息', event.data);
};

// 关闭连接的回调函数
sock.onclose = () => {

};

// 连接错误的回调函数
sock.onerror = (event) => {
  console.log('连接错误', event);
};

//发送消息
sock.send('test');
// 关闭连接
sock.close();

三、实践中遇到的问题

项目使用 vue-cli搭建,并使用了vue的状态管理vuex,websocket使用SockJS-client库

1.一个用户多个聊天组,收到的消息如何区分此条消息是包含于哪个聊天组?
-action.js文件

@params  nowGroupId:当前聊天的组id
         chatData:存放当前聊天组的消息内容
         
initSocket({ state }) {
    sock.onmessage = (event) => {
      const dataArr = JSON.parse(event.data);

      // 当前收到的消息如果属于当前聊天的组则添加进去
      if (dataArr.rId === state.nowGroupId) {
        state.chatData.push(JSON.parse(event.data));
      }
    };

};

相关文章

  • swoole之websocket之协程版和回调版

    项目要用到消息提醒功能,因此借此机会学习websocket 回调版本websocket 协程版本websocket

  • WebSocket学习

    WebSocket学习 为什么需要WebSocket 以往使用的HTTP协议存在一个缺陷,通信只能由客户端发起。 ...

  • websocket学习

    一、websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或...

  • WebSocket学习

    1.pom 核心是@ServerEndPoint注解 使用SpringBoot项目时SpringWebSocket...

  • 学习websocket

    一、什么是websocket websocket是一种网络通信协议。 由于http协议只能由客户端来发起请求,这个...

  • WebSocket学习

    参考网上的各种资源而写。 WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket ...

  • websocket学习

    WebSocket简介 谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为...

  • websocket学习

    websocket的定义 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协...

  • WebSocket 学习(一)认识websocket

    一:背景介绍 近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展...

  • WebSocket 学习(二)node + WebSocket

    一. 环境准备 安装node,安装地址:https://nodejs.org/en/ 安装nodejs-webso...

网友评论

      本文标题:学习websocket

      本文链接:https://www.haomeiwen.com/subject/somamxtx.html