a client written in typescript of the due game framework
npm install due-clientbash
$ npm install due-client
`
yarn安装
`bash
$ yarn add due-client
`
$3
`js
import { Client, Packer } from 'due-client';
// 请求数据包
const buffer = (new TextEncoder).encode(JSON.stringify({
message: 'hello server'
}));
// 创建客户端
const client = new Client({
url: 'ws://127.0.0.1:3553',
heartbeat: 10000,
packer: new Packer({
byteOrder: 'big',
seqBytes: 0,
routeBytes: 4,
bufferBytes: 5000
})
});
// 发送请求响应
const request = (c) => {
let counter = 0;
let i = setInterval(() => {
if (counter >= 10) {
// 清理定时器
clearInterval(i);
// 关闭连接
c.disconnect();
}
// 发送消息
try {
c.request(1, buffer, 2000).then((message) => {
console.log('response message: ', (new TextDecoder).decode(message.buffer));
}).catch(() => {
console.log('reject');
});
counter++;
} catch (error) {
console.log(error);
}
}, 1000);
}
// 发送异步消息
const send = (c) => {
let counter = 0;
let i = setInterval(() => {
if (counter >= 10) {
// 清理定时器
clearInterval(i);
// 关闭连接
c.disconnect();
}
// 发送消息
try {
c.send({
route: 1,
buffer: buffer
});
counter++;
} catch (error) {
console.log(error);
}
}, 1000);
}
// 监听连接
client.onConnect((c) => {
console.log('connect success');
// 发送同步请求,需要客户端和服务器同时开启seq配置
request(c);
// 发送异步消息
// send(c);
});
// 监听连接断开
client.onDisconnect((c) => {
console.log('disconnect success');
// 重新连接
c.connect();
});
// 监听接收到消息
client.onReceive((c, message) => {
console.log('receive message: ', (new TextDecoder).decode(message.buffer));
});
// 监听接受服务器的心跳附带的服务器时间
client.onHeartbeat((c, millisecond) => {
millisecond && console.log("server heartbeat timestamp: ", millisecond);
});
// 建立连接
client.connect();
``