node.js - 连接到没有密码的离线服务器,但仍然获得数据包类型 1 [MINECRAFT]
问题描述
目前,我正在尝试为将来的项目登录(并与之交互)服务器进行 Node.JS 实现,并且由于某种原因(即使我已指定我在没有密码的情况下连接到本地主机)每次发送请求时,我收到来自套接字类型为0x01的响应- 尽管文档 ( https://wiki.vg ) 指出:
对于未经身份验证的(“破解”/离线模式)和本地主机连接(这两个条件中的任何一个都足以用于未加密的连接)没有加密。在这种情况下,Login Start 之后直接跟 Login Success。
我的代码目前看起来像这样(由于出现此问题而未完成):
async function Offline(Settings : IClientSettingsParsed) {
const start = Date.now();
let User = Settings.user;
let Server = Settings.server;
const socket = await TCPSocket.connect(Server.host, Server.port);
try {
{
const handshake = new Packet();
handshake.writeVarInt(0x00);
handshake.writeVarInt(Settings.version);
handshake.writeString(Server.host, true);
handshake.writeUShortBE(Server.port);
handshake.writeVarInt(2);
await socket.writePacket(handshake, true);
const start = new Packet();
start.writeVarInt(0x00);
start.writeString(User.username, true);
await socket.writePacket(start, true);
}
const response = await Packet.from(socket);
const type = response.readVarInt();
return type;
} finally {
await socket.dispose();
}
}
it("Should create a new player in offline mode", () => {
let Settings : IClientSettings = {
username: "Bot",
server: {
host: "localhost",
port: 61001,
offline: true
},
version: EVersion["1.8.9"]
}
return Login(Settings).then((result) => {
expect(result).toBe('a');
});
});
注意:它们在不同的文件中
解决方案
推荐阅读
- javascript - 如何在反应js中更新多个状态
- spring-boot - Spring WebClient:找不到合适的编写器:param1
- android - 如何在 android 的抽屉布局中添加 paddingBottom?
- python - 如何使用 R 或 python 将 4 个不同的 pdf 文件合并到一个 A4 大小的表格中?
- python - 返回迭代器、在 for 循环中产生和从可迭代中产生有什么区别?
- excel - VBA / Excel - 填写公式直到列中的最后一行并选择一个文件
- html - 文本对齐:无序列表的中心在屏幕最小化时看起来关闭
- mysql - 如何使用 group by 和 Order by DESC 获取表中的最后一行?
- google-bigquery - Bigquery 中的 WRITE_TRUNCATE
- python - 基于多个范围从数组中检索间隔