Node.js实现websocket服务器,转换UDP数据
  gA3C6PZiaOAu 2023年11月19日 32 0

Node.js实现websocket服务器,转换UDP数据

const dgram = require('dgram');

function udp_server() {
  const server = dgram.createSocket('udp4');

  server.on('error', (err) => {
    console.error(`server error:\n${err.stack}`);
  });

  server.on('message', (msg, rinfo) => {
    console.log(msg.toString());
    wss.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(msg.toString());
      }
    });

  });

  server.on('listening', () => {
  });

  server.bind(12388);
}
udp_server();

const WebSocket = require('ws');
const readline = require('readline');

// 创建WebSocket服务器
const wss = new WebSocket.Server({ port: 1919 });

// 监听WebSocket连接事件
wss.on('connection', (ws, req) => {
  const clientIp = req.socket.remoteAddress;
  const clientPort = req.socket.remotePort;
  console.log(`客户端已连接,[${clientIp}]:${clientPort}`);

  // 监听WebSocket消息事件
  ws.on('message', (message) => {
    console.log(`收到来自 [${clientIp}]:${clientPort} 的消息: ${message}`);
  });
  
  // 监听WebSocket关闭事件
  ws.on('close', () => {
    console.log(`客户端 [${clientIp}]:${clientPort} 已断开连接`);
  });
});


// 创建一个用于从控制台读取输入的接口
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: "========\r\n"
});

// 监听控制台输入事件
rl.on('line', (input) => {
  // 遍历所有连接的客户端并发送消息
  wss.clients.forEach((client) => {
    if (client.readyState === WebSocket.OPEN) {
      client.send(input);
    }
  });

  // 显示输入提示符
  rl.prompt();
});

console.log('WebSocket服务器已启动,监听端口 1919');
rl.prompt();

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
gA3C6PZiaOAu