侦听Socket.io事件在服务器端起作用,但在客户端不起作用

时间:2019-05-22 18:10:50

标签: javascript node.js reactjs express socket.io

我正在研究一个学生项目,一个约会网站。 我最近尝试使用Socket.io,但遇到问题

我想在用户查看个人资料时发出事件

服务器端监听: 更新数据库

客户端监听: 显示通知

当我发出事件'view user'时,我可以在服务器端监听它,

但是当我尝试在客户端收听时,它不起作用

发出事件:

socket.emit('view user', userId, userTarget)

在服务器端监听它:

export const listenView = (socket) => {
  socket.on('view user', (userId, userTarget) => {
    console.log(`${ userId } viewed ${ userTarget }`)
    //viewUser(userId, userTarget)
  })
}

在客户端收听:

componentDidMount () {
  console.log('MOUNTED')
  socket.on('view user', (userId, userTarget) => {
    console.log(`test viewed listening ${ userId } views ${ userTarget }`)
  })
}

它在服务器端起作用:724688ca-a9a5-4863-ace8-99e541c63b8f viewed 53bdd4e0-10db-43dd-b57b-6efead866517

但是在客户端,仅打印MOUNTED而不是

MOUNTED
test view listening 724688ca-a9a5-4863-ace8-99e541c63b8f viewed 53bdd4e0-10db-43dd-b57b-6efead866517

我做错什么了吗?

提前谢谢!

编辑:套接字始终相同,我在客户端和服务器端检查了ID,并且相同

1 个答案:

答案 0 :(得分:0)

我发现了问题。 要查看客户端上的事件,我必须从服务器发出它:

export const listenView = (socket) => {
  socket.on('view user', (userId, userTarget) => {
    console.log(`${ userId } viewed ${ userTarget }`)
    socket.emit('view user', userId, userTarget)
    //viewUser(userId, userTarget)
  })
}