我正在编写一个多层卡牌游戏(类似炉石传说),使用Nodejs后端和Angular前端。我尝试使用Socket.IO将它们连接起来,但是当我发送一个长度超过8000字符的JSON对象(游戏状态对象)时,客户端会一直断开和重新连接。如果我只发送对象的6000个字符的子字符串,那么一切都正常,但是当发送超过8000个字符时程序就崩溃了(我需要大约20000个字符)。我只在本地主机上测试了。这是后端代码:
编辑:使用ajax可以完美地工作,但我需要sockets。
constructor() {
this.app = express();
this.port = process.env.PORT || ChatServer.PORT;
this.server = createServer(this.app);
this.io = socketIo(this.server);
this.gameService = new GameService();
this.listen();
}
listen(): void {
this.server.listen(this.port, () => {
console.log('Running server on port %s', this.port);
});
this.io.on('connect', (socket: any) => {
console.log('Connected client on port %s.', this.port);
socket.on('message', (m: string) => {
console.log('[server](message): %s', JSON.stringify(m));
this.io.emit('message', JSON.stringify(this.gameService.getGameState()).substring(1, 6000));
});
socket.on('disconnect', () => {
console.log('Client disconnected');
});
});
}
编辑:使用ajax可以完美地工作,但我需要sockets。
gameStateJSON.slice(0, 6000)
吗?我想知道在第8000个字符之后是否有无效的JSON? - Cory Danielson