简体   繁体   English

事件上的 React JS 套接字不会触发

[英]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 thisCreateDocs组件中,我这样做

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM