2016-12-02 8 views
0

パッケージsocket.ioが必要な場合は、なぜhttpパッケージ全体を渡す必要がありますか?socket.io - require(socket.io)(http)

多分、socket.ioが自分のhttpサーバーに接続されている必要がありますか?

これはコードです:

var port = process.env.PORT || 8080; 
    var express = require("express"); 
    var app = new express(); 
    var http = require("http").Server(app); 
    var io = require("socket.io")(http); 


    app.use(express.static(__dirname + "/public")); 

    // listen for events 
    io.on("connection", function() { // first arguments is the name of the event 
     console.log("User connected via socket.io"); 
    }) 

    http.listen(port, function() { 

     console.log("Server started"); 

答えて

2

すべてのWebSocket接続がHTTP接続で始まります。

あなたのケースでは、ソケットサーバーを既存のhttpサーバー(あなたのexpressアプリケーションと同じ)に接続しています。この場合

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

、ソケットサーバが別のサーバとして実行されます:

しかし、あなたは独立したソケットサーバーを持つことができ、それは次のように行くだろう。

あなたが達成しようとしているのは、あなたのウェブサイト内のウェブソケット接続であれば、チャットなどのためにそれを添付して表現するほうがよいので、すべてのreq/resデータにアクセスできます。

+0

Perfect !!!!だから私はsocket.ioがサーバーにどのように接続されているのか理解しています!私はsocket.ioを勉強しています...ありがとう!非常に明確です:) – DevWeb