2017-08-09 22 views
1

仮想サーバー(Ubuntu)でsocket.ioチャットアプリケーションを作成しました。これはsystemdサービスとして実行され、実行中です。 server.jsはこのようになりますSocket.io - https経由でクライアントからサーバーに接続

/var/www/vhosts/mywebpage.de/w1.mywebpage.de/chat/ 

:私のserver.jsが置かれ

私のウェブサイトで

const io = require('socket.io')(3055); 

io.on('connection', function(socket) { 

    // When the client emits 'addUser', this listens and executes 
    socket.on('addUser', function(username, room) { 
     ... 
    }); 

    // When the client emits 'sendMessage', this listens and executes 
    socket.on('sendMessage', function(msg) { 
     ... 
    }); 

    // Disconnect the user 
    socket.on('disconnectUser', function(username, room) { 
     ... 
    }); 

}); 

(HTTPS)私は次のように接続してみてください:

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script> 

<script type="text/javascript"> 
    var loSocket; 
    $(document).ready(function() { 
     if(typeof(loSocket) == 'undefined') { 
      loSocket = io('https://w1.mywebpage.de:3055', { 
       reconnectionAttempts: 5, 
       forceNew: true 
      }); 
     } 
    }); 
</script> 

しかし、有効な接続を取得できません。

開発ツールは、これを言う:

(failed) ERR_CONNECTION_CLOSED with initiator polling-xhr.js:264. 

エラー何ができますか?

+0

まあ、socket.ioにはWebサーバーがないので、server.jsにノードhttpまたはexpressjsを使用してサーバーを設定する必要があります。 https://socket.io/docs/ –

+0

を参照してください。しかし、約2年前に私は同じserver.jsを稼働させました。私はそこから何が変わったのか分かりません。 server.jsは/ usr/bin/nodeで永続的に実行されています。 – Kelturio

答えて

0

私は過去に行ったことから、SSL証明書を提供し、作成したhttpsサーバーを使用してソケットサーバーを作成するhttpsサーバーを作成しました。これによりhttps経由で接続できるようになります。secure socketio上(use this question as a ref

var app = require('http').createServer(handler) 
var io = require('socket.io')(app); 
var fs = require('fs'); 

app.listen(80); 

function handler (req, res) { 
    fs.readFile(__dirname + '/index.html', 
    function (err, data) { 
     if (err) { 
      res.writeHead(500); 
      return res.end('Error loading index.html'); 
     } 

     res.writeHead(200); 
     res.end(data); 
    }); 
} 

io.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
     console.log(data); 
    }); 
}); 

使用このコードのhttp を使用してsocketioサーバーを作成する方法についての参照として、あなたはsocket.io docs

NOTEにこのコードを見つけることができます:あなたは、httpあなたにhttpsがない必要があります。例のように

+0

ありがとう、しかし、私はその問題を考えていない、あなたはhttps://socket.io/docs/から真ん中に見ることができるので... var socket = io( 'socket.io')(PORT)...すでにhttpサーバーを作成しています。 – Kelturio

+0

あなたが自分自身を作成し​​、作成したサーバを使用するソケットサーバを作成した場合、あなたがサーバを提供していなければ、それを作成します。 – y0hami

+0

@Kelturioそれは_HTTP_サーバーではなく、_HTTP_サーバーを作成します。 – robertklep

関連する問題