[英]Socket.io cross domain issue
我有一個在Apache服務器中工作的前端angularJS應用程序(客戶端),其API調用被發送到在NodeJS中運行的后端應用程序(服務器)。 現在,我想在客戶端和服務器之間建立套接字連接。 我正在使用cors npm模塊解決跨域問題,但無法正常工作。
我已經看到了一些解決方案,但是沒有一個對我有用。
這是我的服務器端代碼:
var cors = require('cors')
var app = express();
var http = require('http');
app.use(cors({
origin: true,
credentials: true
}));
var server = http.createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(socket)
{
console.log(":::::::::::::::::::::SOCKET:::::::::::::::::::::")
socket.on('message', function(data) {
console.log(data); })
});
服務器正在http:// localhost:8000 /上運行
這是我的客戶端代碼:
function socket() {
var socket = io.connect('http://localhost:8000/');
return {
on: function(eventName, callback) {
socket.on(eventName, callback);
},
emit: function(eventName, data) {
socket.emit(eventName, data);
},
getSocket: function() {
return socket;
},
removeAllListeners: function() {
socket.removeAllListeners();
}
};
}
我在angularJS中創建了上面的工廠,並在一個函數中調用了它,如下所示:
var socket=PermitFactory.socket();
socket.emit('message', 'ssss');
我在瀏覽器控制台中遇到的錯誤是:
socket-io.js:4948 GET http:// localhost:8000 / socket.io /?EIO = 3&transport = polling&t = LhvWuIr 404(未找到)
在服務器控制台中:
GET /socket.io/?EIO=3&transport=polling&t=LhvUygM 404 18.881毫秒-1153
請幫忙!!!
您得到404 (Not Found)
這意味着問題出在您的url中而不是cors。
http://localhost:8000/
服務器啟動了嗎? 套接字服務器..如果是這樣,則wss
和ws
在wss://localhost:8000/
或wss://localhost:8000/
在您的服務器端腳本上允許跨域,將其放在app.js上
//Access-Control-Allow-Origin
app.use(function(req,res,next){
res.header('Access-Control-Allow-Origin', '*');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Credentials",true);
res.header("Access-Control-Allow-Methods","POST,GET,OPTIONS");
next();
});
app.use(cors());
谷歌瀏覽器插件允許cros起源
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.