luna是一个基于socket.io的服务端,可以在客户端和BDS之间实现低延迟, 双向和基于事件的通信。
注意:luna使用socket.io协议而不是websocket
尽管 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据。这就是为什么 WebSocket 客户端将无法成功连接到 luna 服务器,而 Socket.IO 客户端也将无法连接到普通 WebSocket 服务器。
配置文件位于plugins/nodejs/luna/config.json
连接到luna
这里给出一个使用nodejs的示例
注意:luna使用socket.io协议而不是websocket
尽管 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据。这就是为什么 WebSocket 客户端将无法成功连接到 luna 服务器,而 Socket.IO 客户端也将无法连接到普通 WebSocket 服务器。
配置文件位于plugins/nodejs/luna/config.json
JSON:
{
"port":19132, //监听的端口
"password":"MTE0NTE0MTkxOTgxMA==" //连接密钥
}
连接到luna
这里给出一个使用nodejs的示例
JavaScript:
const { io } = require("socket.io-client");
const socket = io('server_url'); //换成你服务器设置的luna地址,格式为http://{ip}:{端口}
socket.on('connect',()=>{
// 在连接之后需要马上进行认证
socket.emit('verify','password') //换成你服务器设置的luna密钥
console.log('服务器已连接');
});
// 执行list命令,不获取返回值
socket.emit('runcmd',{cmd:"list"});
// 执行list命令,获取返回值
socket.emit(runcmdex,{cmd:"list",id:"114514"});
socket.on('runcmdex_feedback',(result,id)=>{
console.log(result) //执行命令返回值
console.log(id) //执行命令传过去的id
});
// 监听玩家进入服务器
socket.on('Join',(player)=>{
console.log(player);
});
// 监听玩家离开服务器
socket.on('Left',(player)=>{
console.log(player);
});
// 监听玩家聊天
socket.on('Chat',(player,msg)=>{
console.log(player);
console.log(msg);
});
// 更多等待补充