我正在我的反应应用中实施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'因此不允许访问。
答案 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配合使用