在我的应用程序中,我正在使用socketio和nodejs。我正在尝试实现一种简单易用的简单解决方案,该解决方案将数据提供给客户端并将其某些部分更新到服务器端。
一切都进展顺利,直到由于CORS被阻止并且无法在webapp和后端之间建立连接而使Web应用程序无法连接到服务器端时,从IDE(phpstorm)移至docker环境。
缺少什么?我已经尝试了Google几个小时,我不得不说我不知道服务器端实现中仍然缺少什么。
后端:
const io = require('socket.io');
.
.
const server = io.listen(prefs.configs.server.serverPort, {origins: "*:*", transport :[ 'websocket', 'polling', 'xhr']});
server.set('origins', '*:*');
// event fired every time a new client connects:
server.on("connection", (socket) => {...});
socket.io版本2.3.0,最新版本
前端(反应应用程序):
.
.
let mapMarkerLayers = {};
const api_url = process.env.REACT_APP_BACKEND_API_URL;
let socket = null;
//
if (api_url !== undefined) {
socket = socketIOClient(api_url);
} else {
console.log ("Backend url not defined, api calls not in use.");
}
.
.
if (socket) {
socket.on('markers:all', (cb) => {
this.addMarkers(cb);
});
// get all markers from backend to display on the map.
socket.emit("markers:fetch_all");
}
我尝试过使用其他种类的起源字段,但是没有运气。
api调用的结果是FF中的另一种结果。
跨域请求被阻止:“同源起源”策略不允许在http://localhost:5010/socket.io/?EIO=3&> transport = polling&t = MuddFxK上读取>远程资源。 (原因:CORS请求未成功。)