NodeJS socket server 示例

UDP server

UDP 收到的數(shù)據(jù)是有邊界的, 可以確定收到的數(shù)據(jù)是發(fā)送端發(fā)出來的一個完整包.

const dgram = require('dgram');
const events = require('events');
const ip = require('internal-ip');

module.exports = class UDPServer extends events.EventEmitter {
    constructor(port) {
        super();
        this.port = port;
        this.server = dgram.createSocket('udp4');
        this.server.on('error', err => {
            console.log(`UDP 服務異常: ${err.stack}`);
            this.server.close();
        });
        this.server.on('listening', async () => {
            var host = await ip.v4();
            console.log(`UDP 服務監(jiān)聽 ${host}:${this.port}`);
        })
        this.server.on('message', (msg, addr) => {
            console.log(`UDP 服務收到數(shù)據(jù)長度: ${msg.length}`);
        })
        this.server.bind(this.port);
    }
}

TCP server

TCP 收到的數(shù)據(jù)是流式的, 需要通過讀取固定字節(jié)頭的方式來解析數(shù)據(jù)包的邊界.

const net = require('net');
const events = require('events');
const ip = require('internal-ip');

module.exports = class TCPServer extends events.EventEmitter {
    constructor(port) {
        super();
        this.port = port;
        this.server = net.createServer();
        this.server.on('listening', async () => {
            var host = await ip.v4();
            console.log(`TCP 服務監(jiān)聽 ${host}:${this.port}`);
        })
        this.server.on('connection', socket => {
            console.log(`TCP server has a new connection`);
            socket.on('error', e => {
                console.log(`connect error: ${e.stack}`);
            })
            socket.on('end', () => {
                console.log('connect end');
            })
        })
        this.server.on('close', () => {
            console.log('TCP server closed');
        })
        this.server.listen(this.port);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容