[英]React JS socket on event doesn't trigger
I have an Express.js backend and a React front end.我有一个 Express.js 后端和一个 React 前端。
I install the socket.io
on the backend.我在后端安装了
socket.io
。
App.js应用程序.js
const server = app.listen(port, () => { console.log(`Server started on port, ${port} ${process.env.NODE_ENV}`); }); const io = socket(server); io.on('connection', (socket) => { console.log('connected',socket.id) socket.on('infoListUpdate', function () { socket.broadcast.emit('updateInfoList'); console.log('jj') }); socket.on('docsListUpdate', function () { socket.broadcast.emit('updateDocsList',{}); console.log('emited') }); });
In React I have在反应我有
Company.js公司.js
export default function Company(props) { return ( <Fragment> <Agent {...props} /> <CreateDocs {...props} /> <CreateInfo {...props} /> </Fragment> ); }
In the CreateDocs
component, I do this在
CreateDocs
组件中,我这样做
socket.emit('docsListUpdate')
Then I can see the "emitted" is printing on the console.log of the backend.然后我可以看到“发出”正在打印在后端的 console.log 上。 So I think emitting from the front end to the backend part is working.
所以我认为从前端发射到后端部分是有效的。
Then Agent component I added this to listen to that event然后代理组件我添加了这个来监听那个事件
socket.on('updateDocsList',(data)=>{
console.log('i am here')
})
"i am here"
part is never printing. "i am here"
部分永远不会打印。
In the React front end, I created a socket.js
file and import the socket from that file to the components.在 React 前端,我创建了一个
socket.js
文件并将套接字从该文件导入到组件中。
const io = require('socket.io-client');
const baseURL =process.env.REACT_APP_BE_URL;
const socket = io.connect(baseURL,{
transports:['websocket']
})
export default socket;
What's wrong in my code?我的代码有什么问题?
I change this socket.broadcast.emit('updateDocsList',{});
我改变了这个
socket.broadcast.emit('updateDocsList',{});
to socket.emit('updateDocsList',{});
到
socket.emit('updateDocsList',{});
Reason:- Broadcast will emit for all except to the sender.原因:- 广播将向除发送者之外的所有人发出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.