使用node.js搭建websocket服务器

1. 首先服务器要安装node.js。

我是在阿里云上操作,运行下面的指令

sudo apt update

sudo apt install nodejs npm


2. 创建项目文件夹

mkdir websockets

cd websockets

npm install ws


3. 修改代码

package.json文件代码如下:

{

  "type": "module",

  "dependencies": {

    "ws": "^8.18.1"

  }


}

index.js文件代码如下:

import { WebSocketServer } from 'ws';

import readline from 'readline';

// 创建 readline 接口,用于从命令行读取输入

const rl = readline.createInterface({

  input: process.stdin,

  output: process.stdout

});

// 用一个数组保存所有已连接的客户端

const clients = [];

const wss = new WebSocketServer({ port: 8080 });

// 当有新客户端连接时

wss.on('connection', (ws) => {

  console.log('Client is connected');

  clients.push(ws);

  ws.on('message', (data) => {

    console.log('received: %s', data);

  });

  ws.on('close', () => {

    console.log('Client is disconnected');

    // 从数组移除断开连接的客户端

    const index = clients.indexOf(ws);

    if (index !== -1) {

      clients.splice(index, 1);

    }

  });

});

// 手动广播消息的函数

function broadcastMessage(message) {

  clients.forEach((client) => {

    if (client.readyState === 1) { // 1 代表 WebSocket 处于 OPEN 状态

      client.send(message);

    }

  });

}

// 监听命令行的输入,每敲一次回车就发送一次输入的内容给所有客户端

rl.on('line', (line) => {

  // 这里可以处理对输入的进一步解析和处理,然后再发送

  broadcastMessage(line);

  console.log(`Sent to all clients: ${line}`);

});

console.log('WebSocket server started on ws://localhost:8080');

console.log('在控制台输入要发送的内容并回车,即可发送给所有连接的客户端');


4. 运行命令 node index.js


5.可以使用Postman作为客户端,请求地址可设置为ws://IP地址:8080


6. 如果遇到问题,可以运行命令

netstat -tulnp | grep 8080

这个命令可检查占用8080端口的进程是哪个。这个命令可以关闭对应的进程

sudo kill 进程ID

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容