我使用socket.io-fiddle https://github.com/socketio/socket.io-fiddle,尝试每隔10 s连续发送io.emit,但是我连接的客户端仍然没有收到任何消息。
主要问题是无法将emit消息发送到套接字连接列表中的每个人。
还观察到,也不能向房间发送消息。房间似乎总是空的。
所用代码:
import { default as express } from 'express';
import { createServer } from 'http';
import { Server } from 'socket.io';
const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, {
cors: {
origin: true,
methods: ['GET', 'POST'],
allowedHeaders: ['pythonusername', 'pythonpassword', 'authorization'],
credentials: true,
},
});
const port = process.env.PORT || 3001;
app.use(express.static('public'));
io.on('connection', (socket) => {
console.log(`connect ${socket.id}`);
socket.on('join_chat_group', function (data) {
console.log('event=join_chat_group');
socket.join('chat1');
});
socket.on('disconnect', (reason) => {
console.log(`disconnect ${socket.id} due to ${reason}`);
});
});
setTimeout(() => {
io.emit('hello', 'name=sant=toallclients');
}, 1 * 1000);
httpServer.listen(port, () => {
console.log(`server listening at http://localhost:${port}`);
});
ReactJS代码如下所示
import { useState, useEffect } from 'react';
const socket = io('ws://localhost:3001', {
transportOptions: {
polling: {
extraHeaders: {
pythonusername: 'ciR1QorvFx1U',
pythonpassword: 'ENTzh1mrIeq',
},
},
},
transports: ['polling'],
});
function App() {
const [isConnected, setIsConnected] = useState(socket.connected);
useEffect(() => {
socket.on('connect', () => {
setIsConnected(true);
socket.emit('join_python_discovery', 'react');
socket.emit('join_chat_group', 'react');
});
socket.on('disconnect', () => {
setIsConnected(false);
});
socket.on('Start1234', function (data) {
console.log(data, 'hello');
});
socket.on('hello', function (data) {
console.log(data, 'hello');
});
// socket.on('pong', () => {
// setLastPong(new Date().toISOString());
// });
socket.emit('my message', `{name:'santhosh'}`);
return () => {
socket.off('connect');
socket.off('disconnect');
socket.off('hello');
socket.off('Start1234');
};
}, []);
return (
<div className="App">
<h1>UI</h1>
</div>
);
}
export default App;
有些东西还没有找到,有人能帮我吗?
版本:”socket.io“:“^4.0.0”
1条答案
按热度按时间e0bqpujr1#
请在以下位置尝试:https://github.com/socketio/socket.io-fiddle
客户端.js
服务器.js