2017-02-05 119 views
0

私はAzurewebsitesでホストされている自分のアプリケーションにsocket.ioを実装しようとしています。ここでwebappソケットIO net :: ERR_CONNECTION_REFUSED

はserver.js

var app = require('express')(); 
var server = require('http').createServer(app); 

server.listen(process.env.PORT || 3001) 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

var io = require('socket.io')(server); 

io.on('connection', function (socket) { 
     console.log("Socket connected :"+socket.id); 
socket.emit('news', { hello: 'world' }); 
}); 

、ここでは、クライアント側のソケットです。 index.htmlを

<script src="socket.io/socket.io.js"></script> 
      <script> 
     var socket = io('http://localhost:3001'); 
     console.log("scoekt connect",socket) 
     socket.on('connect', function(){ console.log('connected to socket'); }); 
     socket.on('error', function(e){ console.log('error' + e); }); 

    socket.on('news', function(data){ 
    console.log("socket data",data); 

    });</script> 

私が間違って起こっているいただきました!私は本当にわからない以下のエラー enter image description here

を取得しています。ここでは、ファイル・INGのシステムの構造

ROOT 
app/ 
index.html 
server.js 
web.config 

はPSれる:これはAngular2アプリケーション

PSです:私は、このエラーに基づいて提案されたすべての質問をチェックしたが、どれもこれ私が投稿しています、私の問題を解決していませんこの質問。

+0

"あなたはAzurewebsites *でホストされている私のアプリケーションですが、"あなたのクライアント側は 'localhost'で接続しています。 –

+0

私のクライアントとサーバーは、どちらも同じWebサイトでホストされています。だから私は本当にこれが正しいと確信していますか?サーバ側とクライアント側の2つの異なるサイトで試してみると、 'var socket = io();のURLに" Allow-cross-origin-header "を入力するように要求するので、 – Smit

答えて

1

私の経験上、Azure Web Appはあなたのウェブサイトにloaclhostまたは127.0.0.1をバインドせず、ポート80と443だけが一般公開されています。これは、あなたのアプリが聞く特定のポートにマップされ、process.env.PORTで検索できます。ですから、

var socket = io('http://<your app name>.azurewebsites.net'); 

、異なるドメイン内のサーバー側とクライアント側の場合と

var socket = io('http://localhost:3001'); 

を交換する必要があるだろう、あなたはまた、サーバー側でCORSを有効にする必要があると思います。 Azureでは、Azureポータルで有効にすることができます。

  • ブラウザでAzure portalにアクセスし、Appサービスに移動します。
  • メニューをクリックします。
  • 空に各URLを入力してください許可された起源テキストボックス。新しいテキストボックスが作成されます。また、アスタリスク(*)を入力して、すべての原点ドメインが受け入れられるように指定することもできます。
  • をクリックします。

enter image description here

Socket.IOは、Azureのではデフォルトで有効になっていませんWebSocketをし、使用しています。 Azureポータルを使用してWebSocketサポートを有効にすることもできます。以下の手順をご覧ください。 Azureのポータルで

  • アプリケーション設定SETTINGSメニューでをクリックしてください。
  • 保存をクリック
  • をクリックしてウェブソケットの下で。詳細情報については

enter image description here

this documentationを参照してください。

+0

ありがとう!出来た!。私は時々角度がロードされるスクリプトに示されたモジュールをロードしないことが分かってもよいでしょうか。そこにあっても404は見つかりませんでした。 – Smit

+0

'Always On'を有効にすると、いつでもアプリをAzureにロードしたままにできます。詳細は、https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-configureを参照してください。 –

+0

'(index):1 XMLHttpRequestは、http:// .azurewebsites.net/socket.io /?EIO = 3&transport = polling&t = LeN6Skjをロードできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http:// .azurewebsites.netはCORSで*を追加してもアクセスできません – Smit

関連する問題