当客户端发送无效数据包时Node.js崩溃
问题描述:
我正在用node.js制作多人游戏,但当客户端发送无效数据包时它会崩溃。当客户端发送无效数据包时Node.js崩溃
服务器:
msg.readFloatLE(1, true);
客户:
C:\Program Files\nodejs\node.exe: src\node_buffer.cc:752: Assertion `(offset + sizeof(T)) <= (ts_obj_length)' failed.
:
msg.setUint8(1, 1);
所以,如果服务器正在等待浮动,但客户端发送一个int,它与此错误崩溃我正在使用ws library,但我很确定它是关于node.js.我怎样才能解决这个问题?
答
处理异常正如@Ved在他的回答指出 - 的try/catch将是最好的办法。如果你看看为readFloatLE节点文档上面清清楚楚地写着它抛出异常,为您例如
const defaultCriticalValue = 0.0;
const floatNum = parseFloat('a') || defaultCriticalValue;
msg.readFloatLE(floatNum, true);
答
:
只是建议不是标准的东西。
// Throws an exception: RangeError: Index out of range
console.log(buf.readFloatLE(1));
你可以看看文件here
的问题是,究竟你试图完成什么?并readFloatLE正确的工具呢?
你为什么要读一个浮点数,但设置一个int? –
@SterlingArcher我想看看服务器是否崩溃。每个人都可以轻松设置一个int和crash服务器。 – user234
它是自定义包装吗?我在ws中看不到这些方法。 – Lazyexpert