(restify,reactjs,node.js)socket.io客户端状态已断开连接,服务器日志连接



我想尝试从reactjs客户端连接到我的node.js socket.io服务器。服务器登录用户连接/断开连接的服务器,但是客户端似乎超时(其状态说已断开连接(。

这是相关片段:服务器

    var server = restify.createServer()
const socketio = require('socket.io')
const io= socketio.listen(server)
io.sockets.on('connection', function(socket){  
  console.log('a user connected');
  socket.emit('server event',{'foo':'bar'})
  socket.on('disconnect',function(){
     console.log('user disconnected');
 });
 socket.on('client event',function(data){
    console.log(data)
 })
})
server.listen(8999, function () {
  console.log('%s listening at %s', server.name, server.url)
})

然后我打开应用程序,它记录了"用户连接"事件,但是客户端似乎不知道该连接。

React客户端:

   componentDidMount(){
    try {
    this.socket= io.connect('localhost:8999')
    this.socket.on('connected',function(socket){
        console.log('connected')
    })
    this.socket.emit('client event',{value: 'valami tortent'})
    }catch(error){
        console.log(error)
    }
    this.socket.on('server event',function(data){
        console.log(data)
    })
}

我尝试调试客户端,看来它从未收到连接确认的数据包。

似乎是什么问题?我尝试了客户端的所有连接URL类型。奇怪的是,服务器知道连接和断开连接。

问题是,要恢复您必须通过Socketio:创建Reptify Server时的True参数。因此,您必须这样创建:

var server = restify.createServer({
    socketio:true
})

来源:

https://github.com/restify/node-restify/issues/717

您似乎没有在客户端定义IO变量。您必须包括插座io的客户端模块。我希望一旦您这样做。

最新更新