2017-03-23 14 views
0

フロントエンドのangularJSアプリケーション(クライアント)がapacheサーバーで動作し、API呼び出しがNodeJSで実行されているバックエンドアプリケーション(サーバー)に送信されています。今私は、クライアントとサーバーの間のソケット接続をしたい。 クロスドメインの問題に対してcors npmモジュールを使用していますが、動作しません。Socket.ioクロスドメインの問題

私はこれに関するいくつかの解決策を見ましたが、どれも私のために働いていません。ここで

は私のサーバー側のコードです:サーバーは、ここでhttp://localhost:8000/

で働いている

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); }) 
}); 

は私のクライアント側のコードです:

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'); 
のように関数内で呼び出されます。

私は、ブラウザのコンソールで取得エラーは、次のとおりです。

ソケット-io.js:4948 http://localhost:8000/socket.io/?EIO=3&transport=polling&t=LhvWuIr 404(見つかりません)

を取得し、サーバコンソールで:

GET /socket.io /?EIO = 3 &トランスポート=ポーリング& t = LhvUygM 404 18.881 ms - 1153

ご了承ください!

+0

あなたのエラーはコンソールのCORSについて何か言っていましたか? –

+0

いいえ、バックエンドコンソールの唯一のエラーは==> GET /socket.io/?EIO=3&transport=polling&t=LhvhEJB 404 3.971 ms - 1153 –

答えて

0

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()); 

の上に置く、あなたのサーバーサイド・スクリプトにクロスドメインを許可

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

+0

ありがとうございます。しかし、今問題はこれに変更されました==> XMLHttpRequestは、http:// localhost:8000/socket.io /?EIO = 3&transport = polling&t = LhvZzwRをロードできません。資格情報フラグがtrueの場合、ワイルドカード '*'は 'Access-Control-Allow-Origin'ヘッダーで使用できません。したがって、 'http:// localhost'はアクセスが許可されていません。 XMLHttpRequestの信任状モードは、withCredentials属性によって制御されます。 –

1

のCROの起源を許可するGoogleのChromeのプラグインあなたは404 (Not Found)この手段を得ています問題はあなたのウェブサイトではありません。

http://localhost:8000/はサーバーですか?ソケットサーバー..もしそうなら、wss://localhost:8000/の前にwsswsまたはwss://localhost:8000/

+0

はい、サーバーが起動しています。私はwssとhttpを置き換えようとしました..しかし、動作していません –

+0

あなたは404がURLが利用できないことを意味しています..ソケットサーバーが有効でないか何か –

関連する問題