gpt4 book ai didi

node.js - Nodejs : disconnected client from the server by socketio

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:22 24 4
gpt4 key购买 nike

我尝试使用 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)

客户端如何才能不出错地与服务器断开连接?

最佳答案

因为你一遍又一遍地调用socket.disconnect()。向 socket.emit() 提供回调函数,在其中调用 socket.disconnect

服务器

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.emit ('messageSuccess', 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' };

socket.on ('messageSuccess', function (data) {
socket.disconnect();
});
});

关于node.js - Nodejs : disconnected client from the server by socketio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com