websocket结合node.js实现双向通信

WebSocket是一种基于TCP的双向通信协议,解决了HTTP轮询效率低下的问题,提供实时性和连接保持能力,常用于实时通信场景如聊天、游戏等。其使用简单,通过new WebSocket建立连接,并设置onopen、onmessage、onclose回调处理数据交换。服务端通常使用nodejs-websocket库来处理连接和数据传输。

首先我们需要了解,什么是websocket,它的作用和优势是什么,为什么要用它。

什么是websocket?

websocket是基于TCP的一种双向通信协议。在此之前,一直是采用轮询的方式进行双向通信,
这种方式效率低下还非常浪费资源。为了解决这种问题,websocket应运而生。

特点:

  • 双向通信
    websocket使得客户端跟服务端之间交换数据变得更加简单。允许服务器主动向客户端推送数据。浏览器只需要和服务器完成一次握手,就可以创建持久性的连接,并进行双向数据传输。
  • 实时性强
    服务器可以主动给客户端推送数据,相比http请求需要先由客户端发起请求,浏览器才会响应,延迟明显更少、时间更短。
  • 连接保持
    websocket连接创建成功后,只要连接不断开,通信会一直保持,而且还会省略部分状态信息(http请求可能每次请求都需要携带状态信息)

相对于http,websocket优势显而易见。所以在一些实时通信上,都需要用到websocket,比如多媒体聊天、玩家游戏、页面局部刷新、协同编辑等场景。

介绍完了什么是websocket,下面介绍下如何使用websocket

WebSocket 的用法很简单:

var ws = new WebSocket("ws://localhost:8181");

// 指定连接成功后的回调函数
ws.onopen = function() {
   
     
// 向服务器发送数据,数据类型包括文本类型/blob对象/ArrayBuffer对象
  ws.send("Hello WebSockets!"); 
};

// 指定收到服务端数据后的回调函数
(注意:返回数据可能是文本,也可能是二进制数据(blob对象或Arraybuffer对象))
ws.onmessage = function(e) {
   
   
  con
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值