websocket与node.js实现

什么是 websocket?

websoket 是一种网络通信协议,基于 tcp 连接的全双工通信协议(客户端和服务器可以同时收发信息),值得注意的是他不基于 http 协议,websocket 只有在建立连接的时候使用到 http 协议进行连接。

websoket 有如下特点:

  • 只建立一次连接,后续会一直保持连接状态
  • 没有同源限制,可以跨域
  • 可以接受发送任何类型数据
  • 协议是 ws 或 wss,wss 是加密的,增加了 ssl 协议

通过node实现websocket

提示:使用ts实现,运行代码前需要执行如下操作

  1. npm init
  2. tsc --init
  3. npm i @types/node -D
  4. npm i ws
  5. npm i @types/ws -D
typescript 复制代码
import ws from "ws";
// 创建socket服务
const server = new ws.Server({ port: 8080 });
// 监听连接的建立
const openHandle = () => { };
// 监听连接关闭
const closeHandle = () => { };
// 监听错误
const errorHandle = () => {};
const connectionHandle = (ws: ws) => {
  ws.on("message", messageHandle);
};
const messageHandle = (data: Buffer) => {
  // 需要注意的是websocket拿到的是二进制数据,需要通过toString进行转换
  console.log(data.toString());
  // 将收到的信息广播出去
  server.clients.forEach(item => {
    item.send(data.toString());
  });
};

server.on("open", openHandle);
server.on("close", closeHandle);
server.on("error", errorHandle);
server.on("connection", connectionHandle);
相关推荐
程序猿_极客8 分钟前
【node期末作业开发】Node.js+MySQL 实现销售信息管理系统的增删改查(附源码)
数据库·mysql·node.js
小小星球之旅25 分钟前
SpringBoot实现WebSocket实现用户一对一和一对多信息的发送
spring boot·后端·websocket
佳佳_11 小时前
关于在 Fabric.js 中注册字体覆盖的问题
后端·node.js
木西14 小时前
Gemini 3 最新版!Node.js 代理调用教程
前端·node.js·gemini
醇氧20 小时前
【teambition 二开】创建计划工时
node.js·teambition
小新11021 小时前
vscode+nodejs+express 搭建一个简单网站
vscode·node.js·express
浩泽学编程1 天前
内网开发?系统环境变量无权限配置?快速解决使用其他版本node.js
前端·vue.js·vscode·node.js·js
大布布将军1 天前
⚡部署的通行证:Docker 容器化基础
运维·前端·学习·程序人生·docker·容器·node.js
薛定谔的猫-菜鸟程序员1 天前
基于Node.js+Pandoc实现Markdown文件无损转换为Word文档的小工具
node.js·word·vim
2501_921649491 天前
iTick 全球外汇、股票、期货、基金实时行情 API 接口文档详解
开发语言·python·websocket·金融·restful