Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Grasscutter | 12,843 | 3 hours ago | 1 | April 26, 2022 | 103 | agpl-3.0 | Java | |||
A server software reimplementation for a certain anime game. | ||||||||||
Gsnova | 493 | 3 years ago | 18 | February 07, 2020 | 66 | bsd-3-clause | Go | |||
Private proxy solution & network troubleshooting tool. | ||||||||||
Realtime Server | 485 | 2 months ago | 4 | mit | C++ | |||||
A Realtime Dedicated Game Server. 一个2018年写的测试网络同步的服务器demo | ||||||||||
Jwengine | 202 | a year ago | C | |||||||
A cross-platform C++<->lua server quick solution | ||||||||||
Node Kcp | 121 | 2 | 3 | 2 months ago | 14 | July 12, 2022 | 4 | other | C++ | |
KCP Protocol for Node.js | ||||||||||
Leafltd | 66 | 2 years ago | 5 | mit | Go | |||||
leafltd 简介 leafltd是Golang语言社区的项目集合控制项目,其中包含:leaf社区版本,帧同步游戏服务器,H5游戏服务器,KCP,gRPC项目等 | ||||||||||
Kcp Shadowsocks Docker | 64 | 3 years ago | mit | Dockerfile | ||||||
A docker image for shadowsocks server with KCPTUN support | ||||||||||
Realtime Server Ue4 Demo | 56 | 4 years ago | C++ | |||||||
A UE4 State Synchronization demo for realtime-server. 为realtime-server而写的一个UE4状态同步demo. | ||||||||||
Fasttun | 31 | 5 years ago | C++ | |||||||
基于KCP的端口转发服务 | ||||||||||
Kcptunlauncher | 17 | 6 years ago | gpl-3.0 | C# | ||||||
A launcher for kcptun. |
KCP Protocol for Node.js
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
npm install node-kcp
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);
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++));
If you want to use node-kcp in pomelo server, you need pomelo-kcp