簡體   English   中英

在創建Socket.io套接字時使用IP地址參數

[英]Using an IP address parameter in the creation of a Socket.io socket

在以下代碼段中,教程作者展示了如何更改原始教程以包括http服務器。 這是代碼段。

var http = require(‘http’),  
fs = require(‘fs’),  
io = require(‘socket.io’),  
index;  
fs.readFile(‘./chat.html’, function (err, data) {  
 if (err) {
    throw err;
 }
 index = data;
});
var server = http.createServer(function(request, response) {  
  response.writeHeader(200, {“Content-Type”: “text/html”});
  response.write(index);
  response.end();
}).listen(1223);
//and replace var socket = io.listen(1223, "1.2.3.4"); with:
var socket = io.listen(server); 

原始教程中的代碼不包含http服務器, socket定義很簡單:

var socket = io.listen(1223, "1.2.3.4");

我注意到他替換了變量的內容io.listen(1223, "1.2.3.4"); 與不包含ip( 1.2.3.4 )的server

我的問題:

  • 引用的IP地址的目的/作用是什么?
  • 為什么在通過http服務器創建套接字時將其排除在外?

在偵聽端口時,可以選擇包括要偵聽的特定接口的IP地址。 例如,您可能有幾個帶有多個IP地址的網絡接口,而只希望您的服務在其中之一上運行。 一個更常見的用例是,您只希望服務器可以在localhost上訪問,因此您可能只讓它在127.0.0.1上偵聽。

現在,當您調用io.listen(server) ,其中server是現有的Node.js HTTP服務器時,Socket.IO實際上根本沒有打開新的偵聽連接。 這是Socket.IO將其方法包裝在現有HTTP服務器上的快捷方式。 如果你想指定一個特定接口地址監聽,你需要做的是在那里.listen()被稱為HTTP服務器上,上面,你叫io.listen(server)

有關Node.js中原始網絡套接字的文檔中的更多信息: http : //nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM