使用socket.io-client with react时找不到404

时间:2017-07-24 09:23:44

标签: reactjs socket.io

我正在我的反应应用中实施socket.io-client package。我的反应应用程序使用express和webpack。使用以下代码时:

import io from 'socket.io-client';

const socket = io('http://localhost');

在任何组件中,我都会收到以下错误:

  

polling-xhr.js:264 POST http://localhost/socket.io/?EIO=3&transport=polling&t=Lrprs_y 404(Not Found)

使用http://localhost:80时会出现同样的错误。

在' localhost`的地方使用127.0.0.1时,会抛出以下错误:

  

XMLHttpRequest无法加载http://127.0.0.1/socket.io/?EIO=3&transport=polling&t=Lrq3G9W。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost'因此不允许访问。

1 个答案:

答案 0 :(得分:1)

我认为您需要做的就是将代码放入componentDidMount中。做这样的事情:

// Client
componentDidMount() {
    const socket = io('http://localhost:8000');
    socket.on('message', message => {
      console.log(message);
    });
}

// Server
const io = require('socket.io')();

io.on('connection', (client) => {
   console.log('a user connected:', client);
});
io.listen(8000);
console.log('socket io is listening on port ', 8000);
setInterval(() => {
  io.send('hello world');
}, 1000);

然后运行npm run build和npm run prod(或您用来启动节点js服务器的任何命令)。 附言您还可以将Express与socket io配合使用