2017-08-21 22 views
1

私はホワイトボードアプリを作ってるんだ:のNode.js、ソケット、IOおよびHTTPS

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

io.on('connect', function(socket) { 
    socket.on('join', function(data) { 
    socket.join(data.room); 
    console.log(data.room); 
    }); 

    socket.on('drawing', function(data) { 
    console.log(data); 
    io.sockets.in(data.room).emit("senddraw", data); 
    }); 

    socket.on('writetext', function(data) { 
    console.log(data); 
    io.sockets.in(data.room).emit("senddraw", data); 
    }); 

    socket.on('action', function(data) { 
    console.log(data); 
    io.sockets.in(data.room).emit("action", data); 
    }); 

}); 

http.listen(8080, function() { 
    console.log('listening on localhost:8080'); 
}); 

私は自分のサーバー上でこのノードのスクリプトを実行した場合、私は私のWebページの私のlocalhostのコピーを経由して接続することができます。しかし、HTTPSを介して提供されているので、私のサーバー上でホストされているコピーから接続することはできません。

ポーリング - xhr.js:264混在コンテンツ:*****のページがHTTPS経由で読み込まれましたが、安全でないXMLHttpRequestエンドポイント 'http:// を要求しました。 。*:8080/socket.io /?EIO = 3 & transport =ポーリング& t = Lu2NoGL '。このリクエストはブロックされました。 HTTPS経由でコンテンツを配信する必要があります。

私のサーバーでsslを無効にしないとどうすれば解決できますか?

クライアントはと同等のものを持っている:

socket.emit("drawing", {x0 : x0, y0 : y0, x1 : x1, y1: y1, current : current, room : "@roomid"}); 

での選ばれ:

socket.on("drawing", function(data) {do blah}); 
+0

どうぞよろしくお願いいたします。私も同様の問題で立ち往生しています – AnoopGoudar

答えて

1

あなたは、あなたのWebページの中にsocket.io clientコードを変更する必要が描くイベントに

//var socket = io.connect("http://localhost:8080"); 
    var socket = io.connect("http://**.***.***.**:8080"); 

    socket.on("connect", function(data) { 
    socket.emit("join", {room : "@roomid"}); 
    }); 

javascriptをの代わりに/に接続してください:

var socket = io.connect('/'); 
+0

ありがとう。何故ですか?。また、自分のserver.jsファイルに自分のSSL証明書を渡す必要がありますか? – Benjamin

+0

'server.js'で何もする必要はありません(実際には、通常、アプリケーションコードで処理するのではなく、' ssl'に 'nginx'を使用します)' io.connect( '/') 'については、 'localhost'で動作している場合は' io.connect( 'http:// localhost') 'に相当し、実行している場合は' io.connect( 'https:// *:8080') 'と同等ですリモートサーバ上で自動的に現在の 'protocol'と' host'をデフォルトとして選択します – haotang

+0

これは私にエラーを与えます:XMLHttpRequestはhttp://**.**.***.***/socket.ioをロードできません/?EIO = 3&transport = polling&t = LuCTNdr 'http:// localhost'はアクセスが許可されていないため、HTTPステータスコード404が返されます。実際のサーバーで稼働しているノードサーバーでローカルでテストする場合 – Benjamin

関連する問題