2016-12-02 51 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服務器(與你的快速應用程序相同)。

但你可以有一個獨立的插座服務器,這會是這樣的:

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

在這種情況下,插座服務器將運行一個單獨的服務器。

如果您試圖實現的是在您的網站內部的websocket連接,對於聊天或其他方式,最好附加它以表達,以便您可以訪問所有req/res數據。

+0

完美!!!!所以我明白瞭如何在服務器上連接socket.io!我學習socket.io ...非常感謝你!非常清楚:) – DevWeb