我想尝试从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的客户端模块。我希望一旦您这样做。