Node.js网络通信方式:WebSocket协议

上篇介绍了Http协议,本篇介绍WebSocket通信协议。与Http协议“被动”通信相比,WebSocket服务端可以“主动”向客户端推送消息。另外,WebSocket是实时通信的。

【注意】WebSocket协议不适合那些不支持HTML5或对HTML5支持不够充分的浏览器。

首先,安装支持websocket通信协议的模块ws。

服务端代码如下

/**
 * websocket服务端
 */
//加载ws模块
const WebSocket = require("ws");

const server = new WebSocket.Server({port:8080},()=>{
    console.log("WebSocket服务器正在监听8080端口");
});

//连接时
server.on("connection",(ws)=>{
    ws.on("message",(msg)=>{
        console.log("客户端传来的消息:",msg.toString());
        ws.send("你好,你的消息我已经收到了!");
    });
});

//错误异常监听
server.on("error",(err)=>{
   console.error("服务器错误:"+err.message);
});

//服务器关闭事件监听
server.on("close",()=>{
    console.log("服务器关闭!");
});

客户端代码如下

/**
 * WebSocket客户端
 */
const WebSocket = require("ws");
//客户端创建
const client = new WebSocket("ws://localhost:8080");

//建立连接时
client.on("open",()=>{
   console.log("已经连接上服务器!");
   client.send("现在客户端时间:"+Date.now());
});

//断开连接时
client.on("close",()=>{
    console.log("连接已断开!");
});

//监听服务器返回消息
client.on("message",(data)=>{
    console.log("服务器返回的消息:"+data);
});

//错误异常
client.on("error",(err)=>{
   console.error("客户端错误:"+err.message);
});

 运行结果如下:

【服务端】

 【客户端】

之后介绍的Express框架时,会介绍WebSocket的加强版Socket.IO,是一个支持客户端与服务器之间实时、双向、基于事件的通信的库。因为可以让那些不支持WebSocket协议的浏览器会将WebSocket连接自动降为Ajax连接,所以可以保证最大限度地的兼容性。它的目标是统一通信机制,使所有浏览器和移动设备都可以进行实时通信,为开发者提供客户端与服务器端一致的编程体验。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值