udp-kcp
v1.1.15
Published
UDP KCP protocol for Node.js
Downloads
4
Readme
udp-kcp
KCP Protocol for Node.js
Notice
Based on github.com/leenjewel/node-kcp, and add a function getconv,
which may be useful when you need multiple udp connections with
the same host and port, i.e. among peer hosts
Example:
Install by npm
npm install udp-kcp
udpserver.js
var kcp = require('udp-kcp');
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
var clients = {};
var interval = 200;
var output = function(data, size, context) {
server.send(data, 0, size, context.port, context.address);
};
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
var k = rinfo.address+'_'+rinfo.port;
if (undefined === clients[k]) {
var context = {
address : rinfo.address,
port : rinfo.port
};
var kcpobj = new kcp.KCP(123, context);
kcpobj.nodelay(0, interval, 0, 0);
kcpobj.output(output);
clients[k] = kcpobj;
}
var kcpobj = clients[k];
console.log('conv: ', kcpobj.getconv(data));
kcpobj.input(msg);
});
server.on('listening', () => {
var address = server.address();
console.log(`server listening ${address.address} : ${address.port}`);
setInterval(() => {
for (var k in clients) {
var kcpobj = clients[k];
kcpobj.update(Date.now());
var recv = kcpobj.recv();
if (recv) {
console.log(`server recv ${recv} from ${kcpobj.context().address}:${kcpobj.context().port}`);
kcpobj.send('RE-'+recv);
}
}
}, interval);
});
server.bind(41234);
udpclient.js
var kcp = require('udp-kcp');
var kcpobj = new kcp.KCP(123, {address: '127.0.0.1', port: 41234});
var dgram = require('dgram');
var client = dgram.createSocket('udp4');
var msg = 'hello world';
var idx = 1;
var interval = 200;
kcpobj.nodelay(0, interval, 0, 0);
kcpobj.output((data, size, context) => {
client.send(data, 0, size, context.port, context.address);
});
client.on('error', (err) => {
console.log(`client error:\n${err.stack}`);
client.close();
});
client.on('message', (msg, rinfo) => {
kcpobj.input(msg);
});
setInterval(() => {
kcpobj.update(Date.now());
var recv = kcpobj.recv();
if (recv) {
console.log(`client recv ${recv}`);
kcpobj.send(msg+(idx++));
}
}, interval);
kcpobj.send(msg+(idx++));
About Pomelo and Pomelo-kcp
If you want to use udp-kcp in pomelo server, you need pomelo-kcp