index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const kcp = require('./build/Release/kcp');
  2. const dgram = require('dgram');
  3. const server = dgram.createSocket('udp4');
  4. const clients = {};
  5. const interval = 200;
  6. const output = function (data, size, context) {
  7. server.send(data, 0, size, context.port, context.address);
  8. };
  9. server.on('error', (err) => {
  10. console.log(`server error:\n${err.stack}`);
  11. server.close();
  12. });
  13. server.on('message', (msg, rinfo) => {
  14. const k = rinfo.address + '_' + rinfo.port;
  15. if (undefined === clients[k]) {
  16. const context = {
  17. address: rinfo.address,
  18. port: rinfo.port
  19. };
  20. const kcpobj = new kcp.KCP(123, context);
  21. kcpobj.nodelay(0, interval, 0, 0);
  22. kcpobj.output(output);
  23. clients[k] = kcpobj;
  24. }
  25. const kcpobj = clients[k];
  26. kcpobj.input(msg);
  27. console.log(1,recv);
  28. });
  29. server.on('listening', () => {
  30. const address = server.address();
  31. console.log(`server listening ${address.address} : ${address.port}`);
  32. // setInterval(() => {
  33. // for (const k in clients) {
  34. // const kcpobj = clients[k];
  35. // kcpobj.update(Date.now());
  36. // const recv = kcpobj.recv();
  37. // if (recv) {
  38. // console.log(`server recv ${recv} from ${kcpobj.context().address}:${kcpobj.context().port}`);
  39. // kcpobj.send('RE-' + recv);
  40. // }
  41. // }
  42. // }, interval);
  43. });
  44. server.bind(41234);