簡體   English   中英

Socket.io跨域問題

[英]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/服務器啟動了嗎? 套接字服務器..如果是這樣,則wsswswss://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起源

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=zh-CN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM