【发布时间】:2020-02-13 23:05:31
【问题描述】:
我尝试使用 socket.io 以实时形式发送我的数据,以便创建服务器:
const http = require('http').createServer();
const socket = require('socket.io')(http);
socket.on('connection', socket => {
console.log('connected:', socket.client.id);
socket.on('start', data => {
console.log('new message from client:', data);
});
socket.on("disconnect", () => console.log("Client disconnected"));
});
http.listen(3000, () => console.log(`server listening on port: ${3000}`))
在客户端部分我创建了这个脚本:
const socket = require('socket.io-client')('http://localhost:3000');
socket.on('connect', () => {
// socket connected
socket.emit('start', { my: 'data' });
setInterval(() => {
socket.disconnect();
}, 1000);
});
想象一下,在客户端连接到服务器并将数据发送到服务器后想要与服务器断开连接,所以我输入了这个命令:
setInterval(() => {
socket.disconnect();
}, 1000);
执行此命令时出现此错误:
D:\Projects\NodeJs\SafaProjects\socket\client>node client.js
D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:136
Socket.prototype.emit = function (ev) {
^
RangeError: Maximum call stack size exceeded
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:136:34)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
at Socket.socket.on (D:\Projects\NodeJs\SafaProjects\socket\client\client.js:13:12)
at Socket.Emitter.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\component-emitter\index.js:133:20)
at Socket.emit (D:\Projects\NodeJs\SafaProjects\socket\client\node_modules\socket.io-client\lib\socket.js:138:10)
客户端如何才能不出错地与服务器断开连接?
【问题讨论】:
标签: node.js websocket socket.io