| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- var kcp = require('./../build/Release/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', (data, 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.stream(1);
- kcpobj.nodelay(0, interval, 0, 0);
- kcpobj.output(output);
- clients[k] = kcpobj;
- }
- var kcpobj = clients[k];
- kcpobj.input(data);
- var recv = kcpobj.recv();
- if (recv) {
- recv = recv.toString();
- console.log(`Server recv ${recv} from ${kcpobj.context().address}:${kcpobj.context().port}`);
- kcpobj.send('RE-'+recv);
- }
- });
- 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());
- }
- }, interval);
- });
- server.bind(41234);
|