eggjs创建socket udp服务

本文介绍了如何在Egg.js框架中创建一个基于UDP的socket服务,包括服务器的启动、错误处理和端口绑定的特殊要求。特别提到在Egg环境中需设置`exclusive:true`来确保正确运行。
摘要由CSDN通过智能技术生成

想了一晚上的bug   烦死了 

用egg 创建一个socket udp服务

首先创建一个service/udp.js

// app/service/udp.js

const dgram = require('dgram');

module.exports = app => {
  return {
    startServer() {
      const server = dgram.createSocket('udp4');

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

      server.on('message', (msg, rinfo) => {
        console.log(`Received: ${msg} from ${rinfo.address}:${rinfo.port}`);
        // 在这里处理收到的消息,并可以进行相应的回复
        // ...
        // 示例回复消息
        const responseMsg = 'Hello, client!';
        server.send(responseMsg, 0, responseMsg.length, rinfo.port, rinfo.address, (err) => {
          if (err) {
            console.log(`UDP server send error:\n${err.stack}`);
          }
        });
      });

      server.on('listening', () => {
        const address = server.address();
        console.log(`UDP server listening on ${address.address}:${address.port}`);
      });

      // 设置服务监听的端口
      const port = 12345;
      server.bind({
        port:port,
        exclusive: true,
      });
      console.log("shuaishuai")
    },
  };
};

一个坑!!!!!!!!   正常 js 文件 运行的时候  server.bind(port) 就可以正常运行

 但是在 egg 运行的时候就 需要加上    exclusive: true,

  server.bind({
        port:port,
        exclusive: true,
      });

然后在app.js中 调用就可以了

app.beforeStart(async() => {
        await app.serviceClasses.udp.startServer()
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值