Node Kcp

KCP Protocol for Node.js
Alternatives To Node Kcp
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Grasscutter12,843
3 hours ago1April 26, 2022103agpl-3.0Java
A server software reimplementation for a certain anime game.
Gsnova493
3 years ago18February 07, 202066bsd-3-clauseGo
Private proxy solution & network troubleshooting tool.
Realtime Server485
2 months ago4mitC++
A Realtime Dedicated Game Server. 一个2018年写的测试网络同步的服务器demo
Jwengine202
a year agoC
A cross-platform C++<->lua server quick solution
Node Kcp121232 months ago14July 12, 20224otherC++
KCP Protocol for Node.js
Leafltd66
2 years ago5mitGo
leafltd 简介 leafltd是Golang语言社区的项目集合控制项目,其中包含:leaf社区版本,帧同步游戏服务器,H5游戏服务器,KCP,gRPC项目等
Kcp Shadowsocks Docker64
3 years agomitDockerfile
A docker image for shadowsocks server with KCPTUN support
Realtime Server Ue4 Demo56
4 years agoC++
A UE4 State Synchronization demo for realtime-server. 为realtime-server而写的一个UE4状态同步demo.
Fasttun31
5 years agoC++
基于KCP的端口转发服务
Kcptunlauncher17
6 years agogpl-3.0C#
A launcher for kcptun.
Alternatives To Node Kcp
Select To Compare


Alternative Project Comparisons
Readme

node-kcp

Build Status

KCP Protocol for Node.js

HowTo

Build:

npm install -g node-gyp

node-gyp configure

git clone [email protected]:leenjewel/node-kcp

cd node-kcp

git submodule init

git submodule update

node-gyp build

Example:

Install by npm

npm install node-kcp

udpserver.js

var kcp = require('node-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];
    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('node-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 node-kcp in pomelo server, you need pomelo-kcp

Popular Kcp Projects
Popular Server Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C Plus Plus
Server
Kcp