js监听iframe关闭_Node.js文档NET[翻译]
Net模塊提供一個異步的網絡API,這個API可以創建基于流的TCP,或者IPC服務器(net.createServer()),和客戶端(net.createConnection())。
它可以這樣訪問:
const net = require('net');IPC支持
net模塊在Windows上支持命名管道IPC,在其它系統上支持UNIX域套接字。
為IPC鏈接識別路徑
net.connect()、net.createConnection()、server.listen()和socket.connect()使用一個path參數去識別IPC端點。
在UNIX中,本地域名也稱之為UNIX域。路徑是一個文件系統路徑。它被從sizeof(sockaddr_un.sun_path)-1出截斷,根據不同的系統在91到107字節之間。在Linux上通常為107個字節,在macOS上為103個字節。路徑同樣要遵循命名規范,并且在創建文件時會檢查權限。如果UNIX域socket(這里作為一個文件系統路徑可見)被創建,并且使用Node.js的API抽象(比如net.createServer())做連接,它將作為server.close()的一部分斷開連接。另一方面,如果是在這些抽象之外創建和使用,用戶需要手動移除。著同樣適用于在Node.js API創建路徑的時候,程序突然崩潰的情況。總之,一旦UNIX域socket被創建之后將會一直在文件系統中存在,直到斷開連接。
在Windows上,本地域名通過使用命名的管道實現。路徑必須是以?pipe 或者 .pipe為入口。任意字符都是被允許的,但是后者要處理一些管道的名字,比如解析..序列。不管看起來怎么樣,管道命名空間都是平面的。管道不會持久保存。當它們的最后一個引用被關閉的時候被移除。不像UNIX領域socket,Windows將關閉和移除管道,當擁有管道的進程退出時。
JavaScript字符串轉義要求路徑用雙反斜線轉義,例如:
net.createServer().listen(path.join('?pipe', process.cwd(), 'myctl'));Class:net.Server
在v0.1.90添加
該類用于創建一個TCP或者IPC服務器。
new net.Server([options][,connectionlistener])
- options <Object> 參考 net.createServer([options][, connectionListener])。
- connectionListener <Function> 為’connection’事件自動設置一個監聽器。
- 返回:<net.Server>
net.Server是一個擁有以下事件的EventEmitter:
Event:’close’
V0.5.0添加
server關閉的時候發射。注意如果鏈接存在,事件在所有鏈接沒有結束的時候不會發射。
Event:’connection’
v0.1.90添加
- <net.Socket>
新建一個connection的時候發射。socket是net.Socket的實例。
Event:’error’
v0.1.90添加
- <Error>
一個錯誤發生時發射。不同于net.Socket,’close’事件不會再這個事件之后直接發射,而是手動調用server.close()之后發射。參考server.listen()中的討論。
Event:’listening’
v0.1.90添加
server在調用server.listen()綁定后發射。
server.address()
v0.1.90
- 返回:<Object>|<string>
如果在一個IP socket上監聽(當得到一個OS-指定的地址,用于查找分配了哪個端口),返回綁定的address、地址family名字、和操作系統報告的服務器的port:{ port: 12346, family: 'IPv4', address: '127.0.0.1' }。
對于監聽一個管道或者UNIX域socket的server,返回的名字是一個字符串。
const server = net.createServer((socket) => {socket.end('goodbyen'); }).on('error', (err) => {// handle errors herethrow err; });// Grab an arbitrary unused port. server.listen(() => {console.log('opened server on', server.address()); });在’listening’事件未發射之前,不要調用server.address()。
server.close([callback])
v0.1.90添加
- callback <Function> 當server關閉的時候調用。
- 返回:<net.Server>
停止server接收新的鏈接和保持存在的鏈接。這個函數是異步的,server會在所有鏈接結束的時候關閉,并且發射一個’close’事件。callback會在’close’事件發生時調用。不同于其它事件,Error將會作為它的唯一參數被調用,如果server在關閉的并沒有打開。
server.getConnections(callback)
v0.9.7添加
- callback <Function>
- 返回:<net.Server>
異步獲得服務器上的并發鏈接數。當socket被傳遞到子進程時工作。
回調函數應該有兩個參數err和count。
server.listen()
啟動一個服務器監聽鏈接。一個net.Server根據監聽的內容可以是一個TCP,或者IPC服務器。
可能的參數:
- server.listen(handle[,backlog][,callback])
- server.listen(options[, callback])
- server.listen(path[,backlog][,callback]) 對于IPC服務器
- server.listen(port[[, host[, backlog]]][, callback])對于TCP服務器
這個函數是異步的。當服務器開始監聽的時候,’listening’事件會被發射。最后一個callback參數會被添加,當為’listening’事件添加一個監聽器時。
所有的listen()方法都可以通過一個backlog參數指定排隊的等待鏈接數的最大值。實際的長度將會取決于OS的sysctl設置,例如Linux上是tcp_max_syn_backlog和somaxconn。這個參數的默認值是511。
所有的net.Socket都被設置為SO_REUSEADDR(參考socket(7)了解詳細)。
當且僅當第一次調用server.listen()或者server.close()拋出一個錯誤的時候可以再次調用server.listen()。否則,會拋出一個ERR_SERVER_ALREADY_LISTEN錯誤。
最常見的一個錯誤是監聽到EADDRINUSE。這是因為另一個服務正在監聽請求的port/path/handle。一種處理這個情況的方法是過一段時間后重試:
server.on('error', (e) => {if (e.code === 'EADDRINUSE') {console.log('Address in use, retrying...');setTimeout(() => {server.close();server.listen(PORT, HOST);}, 1000);} });server.listen(handle[,backlog][,callback])
v0.5.10添加
- handle <Object>
- backlog <number> server.listen()函數的通用參數
- callback <Function> server.listen()函數的通用參數
- 返回:<net.Server>
啟動一個服務器,在給定的handle上監聽鏈接,這個handle已經被綁定到一個端口、一個UNIX域socket、或者一個Windows的管道。
handle對象可以是一個服務器、一個socket(任何擁有底層_handle成員的東西),或者擁有fd成員(一個有效的文件描述符)的對象。
Windows上不支持監聽一個文件描述符。
server.listen(options[,callback])
v11.4.0 支持ipv6Only選項
在v0.11.14版本添加
- options<Object>必須的。支持以下屬性:
- Port <number>
- Host <string>
- Path <string> 如果指定了端口將會忽略。參考《為IPC鏈接識別路徑》
- backlog <number> server.listen()函數的通用參數。
- Exclusive <boolean> 默認:false
- readableAll<boolean> 對于IPC服務器,它讓管道被所有用戶可讀。默認:false
- writableAll<boolean>對于IPC服務器,它讓管道被所有用戶可寫。默認:false
- ipv6Only <boolean> 對于TCP服務器,設置ipv6Only設置為true,將會使雙協議棧不可用。也就是,綁定::到主機,不會使0.0.0.0被綁定。默認:false。
- Callback <Function> server.listen()的通用函數。
- 返回: <net.Server>
如果指定了port,它的作用和server.listen([port[, host[, backlog]]][, callback])一樣。否則,如果path被指定,它的作用跟server.listen(path[, backlog][, callback])。如果都沒有指定,則會拋出錯誤。
如果exclusive是false(默認),則cluster workers都會使用相同的底層句柄,允許鏈接處理責任分享(?)。當exclusive是true,句柄不會被分享,企圖分享端口會報錯。下面的例子是監聽一個獨享端口的代碼。
server.listen({host: 'localhost',port: 80,exclusive: true });使用一個IPC服務器作為root,可能導致沒有特權的用戶無法訪問服務器路徑。使用readableAll和writableAll可以使服務器對所有用戶可訪問。
server.listen(path[,backlog][,callback])
在v0.1.90添加
- Path <string> 服務器應該監聽的路徑。參考《為IPC鏈接識別路徑》
- backlog <number> server.listen()函數的通用參數。
- Callback <Function> server.listen()的通用函數。
- 返回:<net.Server>
啟動一個IPC服務器監聽給定的path的鏈接。
server.listen([port[,host[,backlog]]][,callback])
在v0.1.90添加
- Port <number>
- Host <string>
- Backlog <number> server.listen()函數的通用參數。
- callback<Function> server.listen()函數的通用參數。
- 返回:<net.Server>
啟動一個TCP服務器監聽給定的port和host的鏈接。
如果port被忽略,或者是0,則操作系統會任意分配一個未使用的端口,在發射’listening’事件發射之后,可以使用server.address().port重新設置。
如果host被忽略,如果IPv6可見,則接收在unspecified IPv6 address(::)上的鏈接,或者unspecified IPv4 address0:0:0:0)。
在大多數操作系統上,監聽unspecified IPv6 address (::)可能會導致net.Server同樣監聽unspecified IPv4 address (0.0.0.0)。
server.listening
在v5.7.0添加
- <boolean> 表明服務器是否在監聽鏈接。
server.maxConnections
在v0.2.0添加
設置這個屬性,當服務器的鏈接數過高的時候丟棄鏈接。
一旦一個socket使用child_process.fork()被傳遞到一個子進程,則不推薦使用這個選項。
server.ref()
在v0.9.1添加
- 返回:<net.Server>
跟unref()相反,在之前unref過的服務器上調用ref(),如果這是唯一存留的服務器,將不會使程序退出(默認行為)。如果已經ref的服務器再次調用ref(),則不會有作用。
server.unref()
在v0.9.1添加
- 返回:<net.Server>
如果這個server是事件系統中唯一有效的,則調用unref()會允許程序退出。如果已經unref的服務器再次調用unref(),則不會有作用。
Class:net.Socket
在0.3.4添加
這個類是TCP socket,或者是流IPC端點(在Windows中名字是管道,UNIX用的是領域socket)的抽象類。net.Socket是一個雙工流,所以它可讀可寫,它同樣是一個EventEmitter。
用戶可以創建一個net.Socket,并且可以直接跟一個服務器交互。例如:它由net.createConnection(),所以用戶可以跟服務器通訊。
Node.js同樣可以創建一個,并且在接收到鏈接時傳遞給用戶。例如,它被傳遞給在一個net.Server發射的‘connection’事件的監聽器上,所以用戶可以用它跟客戶端交流。
new net.Socket([options])
v0.3.4添加
- options <Object> 可見的選項如下:
- fd <number> 如果指定了該參數,則使用給定的文件描述符包裝已存在的socket,否則會創建一個新的socket。
- allowHalfOpen <boolean> 表明是否允許half-opened TCP 鏈接。參考net.createServer()和'end'事件了解詳細。默認:false。
- readable <boolean> 當傳了fd之后允許在socket上讀,否則忽略。默認:false。
- writable <boolean> 當傳了fd之后允許在socket上寫,否則忽略。默認:false。
- 返回:<net.Socket>
創建一個新的socket對象。
新創建的socket可以是一個TCP socket,也可以是一個流IPC端點,這取決于它connect()[socket.connect()]什么。
Event: 'close'
在v0.1.90添加
- hadError <boolean> true 如果socket有一個傳送錯誤。
在socket完全關閉以后發射。hadError參數是一個布爾值,它表示socket是否是因為傳輸錯誤導致的關閉。
Event: 'connect'
在v0.1.90添加
當一個socket鏈接完全建立之后發射。參考net.createConnection()。
Event: 'data'
在v0.1.90添加
- <Buffer> | <string>
當數據收到的時候發射。參數data將會是一個Buffer,或者String。socket.setEncoding()設置數據編碼。
注意,如果當一個Socket發射一個'data'事件的時候沒有監聽者,數據會丟失。
Event:'drain'
在v0.1.90添加
當寫緩存變空的時候發射。可以用來上傳節流。
參考:socket.write()的返回值。
Event:'end'
在v0.1.90添加
當socket的另一端發送一個FIN包的時候發射,因此結束socket的可讀的一端。
默認(allowHalfOpen是false),socket將會發送一個FIN包返回,并且一旦寫入它的等待隊列,就銷毀它的文件描述符。然而,如果allowHalfOpen被設置為true,socket不會自動end()它的可寫端,允許用戶寫任意數量的數據。用戶必須顯示的調用end()去結束鏈接(也就是發送一個FIN包返回)。
Event: 'error'
在v0.1.90添加
- <Error>
當一個錯誤發生時發射。在這個事件之后'close'事件會被調用。
Event: 'lookup'
v5.10.0 支持host參數。
v0.11.3 添加
在連接之前解析主機之后發射。不適用于UNIX socket。
- err <Error> | <null> error對象。參看dns.lookup()。
- address <string> IP地址
- family <string> | <null> 地址類型。參看dns.lookup()。
- host <string> 主機名稱。
Event: 'ready'
在v9.11.0添加
當一個socket準備好被使用時發射。
在'connect'之后觸發。
Event:'timeout'
在v0.1.90添加
不活動的socket超時時發射。這只能提示socket是空閑狀態。用戶必須手動關閉鏈接。
參考:socket.setTimeout()。
socket.address()
在v0.1.90添加
- 返回:<Object>
返回綁定的address、地址的family名字和操作系統報告的socket的port:{ port: 12346, family: 'IPv4', address: '127.0.0.1' }
socket.bufferSize
在v0.3.8添加
net.Socket擁有socket.write()一直工作的屬性。這幫助用戶快速啟動和運行。計算機不能總是趕得上寫入一個socket的數據量——網絡鏈接只是可能太慢了。Node.js需要內部排隊數據寫入一個socket,并且在可能的時候發送出去。(內部輪詢socket的文件描述符是可寫的)。
內部緩存的后果是導致內存上升。這個屬性顯示要寫入的字符的數量。(字符的數量大約跟要寫入的字節的數量一致,但是緩存中可能包含字符串(字符串是lazily編碼的),所以具體的字節數不確定)
有經驗的用戶在處理大的,或者增長的bufferSize應該在他的程序中使用socket.pause()和socket.resume()節流數據。
socket.bytesRead
在v0.5.3添加
接收到的字節的數量
socket.bytesWritten
在v0.5.3添加
發送的字節數
socket.connect()
在給定的socket上創建一個鏈接。
可能的樣本:
- socket.connect(options[,connectListener])
- socket.connect(path[,connectListener]) 對于IPC鏈接。
- socket.connect(port[,host][,connectListener])對于TCP鏈接。
- 返回:<net.Socket>socket本身。
這個函數是異步的。當鏈接建立時,'connect'事件將會被發射。如果這是一個有問題的連接,則不會發射'connect'事件,而是會發射'error'事件并且把錯誤傳遞給'error'監聽者。最后的參數connectListener(如果一旦指定了),將會被當做'connect'事件的監聽者。
socket.connection(options[,connectListener])
v6.0.0 在所有情況下hints選項都默認為0。之前,在缺少family選項時,它默認為dns.ADDRCONFIG | dns.V4MAPPED。
v5.11.0 支持hints選項。
v0.1.90 添加
- options <Object>
- connectListener <Function> socket.connect()方法的通用參數。將會被添加為'connect'事件的監聽者。
- 返回:<net.Socket> socket本身。
在給定的socket上創建一個鏈接。通常這個方法是不需要的,socket應該通過net.createConnection()創建和打開。只有在自定義一個Socket的時候需要這個方法。
對于TCP鏈接,可見的options有:
- port <number> 需要。socket應該連接的端口。
- host <string> socket需要連接的主機。默認:'localhost'。
- localAddress <string> socket應該連接的本地地址。
- localPort <number> socket應該連接的本地端口。
- family <number> IP協議的版本,可以是4或者6。默認:4。
- hints <number> 可選擇的 dns.lookup() 提示。
- lookup <Function> 自定義查找方法。默認:dns.lookup()。
對于IPC鏈接,可見的options是:
- path <string> 需要。客戶端需要連接的路徑。參考<為IPC鏈接識別路徑>。
socket.connect(path[,connectListener])
- path <string> 客戶端應該連接的路徑。參考<為IPC鏈接識別路徑>。
- connectListener <Function> socket.connect()方法的通用參數。將會被添加為'connect'事件的監聽者。
- 返回:<net.Socket> socket本身。
相當于用{ path: path}當做options調用socket.connect(options[,connectListener])。
socket.connect(port[,host][,connectlistener])
在v0.1.90添加
- port <number> 客戶端應該連接的端口。
- host <string> 客戶端t需要連接的主機。
- connectListener <Function> socket.connect()方法的通用參數。將會被添加為'connect'事件的監聽者。
- 返回:<net.Socket> socket本身。
在給定的socket上創建一個鏈接。
相當于用{port: port, host: host}當做options調用socket.connect(options[,connectListener])。
socket.connecting
在v6.1.0添加
如果是true,表示調用了socket.connect(options[, connectListener])并且函數還在執行。直到socket連接上還是true,然后設置為false,并且發射'connect'事件。注意,socket.connect(options[,connectListener])回調是'connect'事件的監聽者。
socket.destroy([exception])
在v0.1.90添加
- exception <Object>
- 返回: <net.Socket>
確保沒有多余的I/O活動在這個socket中。只有必要的錯誤(解析錯誤或者其它)。
如果指定了exception,則當一個'error'事件發射的時候,任何該事件的監聽者都會收到exception參數。
socket.destroyed
- <boolean> 表示鏈接是否被銷毀了。一旦鏈接被銷毀了,則不會有數據用它來傳送。
socket.end([data][,encoding][,callback])
在v0.1.90添加
- data <string> | <Buffer> | <Uint8Array>
- encoding <string> Only used when data is string. 默認:'utf8'。
- callback <Function> 當socket完成是的可選回調函數。
- 返回:<net.Socket> socket本身。
半關閉socket。也就是,發送一個FIN包。如果可能,服務器仍然會發送一些數據。
如果指定了data,相當于調用socket.write(data, encoding)之后接著調用socket.end()。
socket.localAddress
在v0.9.6添加
字符串代表了遠程客戶端連接的本地IP地址。例如,一個服務器監聽'0.0.0.0',如果一個客戶端連接'192.168.1.1',則socket.localAddress將會是'192.168.1.1'。
socket.localPort
在v0.9.6添加
這個數字代表本地端口。例如,80或者21。
socket.pause()
- 返回: <net.Socket> socket本身。
暫停讀取數據。就是'data'事件將不會發射。用戶減慢上傳的速度。
socket.pending
在v11.2.0添加
- <boolean>
如果是true則表示socket還沒有連接,或者因為.connect()還沒有被調用到,或者還在連接的過程中(參考socket.connecting)。
socket.ref()
在v0.9.1
- 返回:<net.Socket> socket本身。
unref的反面,在之前調用過unref的socket上面調用ref(),如果這是僅存的socket,則不會讓程序退出(默認行為)。如果socket已經調用過ref,則再次調用沒有效果。
socket.remoteAddress
在v0.5.10添加
字符串代表遠程IP地址。例如,'74.125.127.100' 或者 '2001:4860:a005::68'。如果socket被銷毀(例如,如果客戶端斷開連接)則數值是undefined。
socket.remoteFamily
在v0.5.10添加
字符串代表遠程IP協議族。'IPv4',或者'IPv6'。
socket.remotePort
在v0.5.10添加
這個數字代表遠程端口。例如,80或者21。
socket.resume()
- 返回:<net.Socket> socket本身。
在調用socket.pause()之后恢復讀。
socket.setEncoding([encoding])
在v0.1.90添加
- encoding <string>
- 返回:<net.Socket> socket本身。
為Readable Stream設置編碼。參考readable.setEncoding()或者更多信息。
socket.setKeepAlive([enable][,initialdelay])
在v0.1.92添加
- enable<boolean> 默認:false
- initialDelay <number> 默認:0
- 返回:<net.Socket> socket本身。
啟動/禁止長連接功能,在第一個長連接探針被發送到一個空閑socket之前設置任意初始延遲。
設置initialDelay(毫秒)設置延遲,在收到最后一個數據包和第一個長連接探針之間。initialDelay設置0,將會保持默認值不變。
socket.setNoDelay([noDelay])
在v0.1.90添加
- noDelay <boolean> 默認:true
- 返回:<net.Socket> socket本身。
禁止Nagle算法。默認TCP鏈接會使用Nagle算法,在發送數據之前會緩存數據。把noDelay設置為true,將會在每次調用socket.write()之后立即發送數據。
socket.setTimeout(timeout[,callback])
在v0.1.90添加
- timeout <number>
- callback <Function>
- 返回: <net.Socket> socket本身。
設置socket超時在timeout毫秒不活動之后。默認:net.Socket沒有超時。
當一個閑置的超時被觸發,socket會收到一個'timeout'事件,但是連接不會被斷開。用戶需要手動調用socket.end(),或者socket.destroy()去結束連接。
socket.setTimeout(3000); socket.on('timeout', () => {console.log('socket timeout');socket.end(); });如果timeout是0,則現有的閑置超時被禁止。
可選擇的callback參數對于'timeout'事件,將會被當做一個以前的監聽者。[The optional callback parameter will be added as a one-time listener for the 'timeout' event.]
socket.unref()
在v0.9.1添加
- 返回:<net.Socket> socket本身。
在一個socket上調用unref(),則如果這是在事件系統中唯一的活動socket,則允許程序退出。如果socket已經調用過unref,則再次調用沒有效果。
socket.write(data[,encoding][,callback])
在v0.1.90添加
- data <string> | <Buffer> | <Uint8Array>
- encoding <string> 只有在數據是string的時候使用。默認:utf8。
- callback <Function>
- 返回:<boolean>
在socket上發送數據。第二個參數在是字符串的時候指定編碼——默認UTF8。
如果所有的數據都刷新到內部緩存則返回true。如果數據在用戶內存中排隊則返回false。但緩存再次空閑時發射'drain'事件。
可選用的參數callback將會被執行,在數據最終被寫出之后——這個可能不會立即執行。
參考Writable流的write()方法獲得更多信息。
net.connect()
net.createConnection()的別名。
可能的樣本:
- net.connect(options[,connectListener])
- net.connect(path[,connectListener]) 對于IPC鏈接。
- net.connect(port[,host][,connectListener])對于TCP鏈接。
net.connect(options[,connectListener])
在v0.7.0添加
- options <Object>
- connectListener <Function>
net.createConnection(options[,connectListener])的別名。
net.connect(path[,connectListener])
在v0.1.90添加
- path <string>
- connectListener <Function>
net.createConnection(path[,connectListener])的別名
net.connect(port[,host][,connectlistener])
在v0.1.90添加
- port<number>
- host<string>
- connectListener <Function>
net.createConnection(port[,host][,connectListener])的別名。
net.createConnection()
一個工廠函數,它創建一個新的net.Socket,立即通過socket.connect()啟動連接,然后返回啟動連接的net.Socket。
當鏈接建立,在返回的socket上會發送一個'connect'事件。如果提供了最后一個connectListener參數,它將會被當做'connect'事件的監聽者。
可能的樣本:
- net.createConnection(options[,connectListener])
- net.createConnection(path[, connectListener])對于IPC鏈接。
- net.createConnection(port[,host][,connectListener])對于TCP鏈接。
net.connect()函數是這個函數的別名。
net.createConnection(options[,connectListener])
在v0.1.90添加
- options <Object> 需要。將會同時傳遞給new netSocket([options])調用和socket.connect(options[,connectListener])方法。
- connectListener <Function> net.createConnection()函數的通用參數。如果提拱了,將會被當做返回的socket的'connnect'事件的監聽者。
- 返回: <net.Socket> 新創建的socket需要啟動鏈接。
可見的選項為:參考new net.Socket([options])和socket.connect(options[,connectListener])。
附加選項:
- timeout <number> 如果設置了,會在socket創建之后,但是它啟動連接之前,將會用來調用socket.setTimeout(timeout)。
下面是在net.createServer()章節描述的客戶端服務器的例子:
const net = require('net'); const client = net.createConnection({ port: 8124 }, () => {// 'connect' listenerconsole.log('connected to server!');client.write('world!rn'); }); client.on('data', (data) => {console.log(data.toString());client.end(); }); client.on('end', () => {console.log('disconnected from server'); });想要連接到socket /tmp/echo.sock,只需要將第二行改為:
const client = net.createConnection({ path: '/tmp/echo.sock' });net.createConnect(path[,connectListener])
在v0.1.90添加
- path <string> socket需要連接的路徑。將會傳遞給socket.connect(path[,connectListener])。參考<為IPC鏈接識別路徑>
- connectListener <Function> net.createConnection()的通用參數,在初始化socket的時候的"一次"監聽器。將會傳遞給socket.connect(path[,connectListener])。
- 返回:<net.Socket> 新創建的socket需要啟動連接。
初始化一個IPC連接。
這個函數用所有默認選項創建一個新net.Socket,立即通過socket.connect(path[,connectListener])啟動連接,然后返回net.Socket啟動連接。
net.createConnect(port[,host][,connectlistener])
在v0.1.90添加
- port<number> socket需要連接的端口。將會傳遞給socket.connect(port[,host][,connectListener])。
- host<string> socket需要連接的主機。將會傳遞給socket.connect(port[,host][,connectListener])。默認:'localhost'。
- connectListener <Function> net.createConnection()的通用參數,在初始化socket的時候的"一次"監聽器。將會傳遞給socket.connect(path[,connectListener])。
- 返回:<net.Socket> 新創建的socket需要啟動連接。
初始化一個TCP連接。
這個函數用所有默認選項創建一個新net.Socket,立即通過socket.connect(port[,host][,connectListener])啟動連接,然后返回net.Socket啟動連接。
net.createServer([options][,connectionlistener])
在v0.5.0添加
- options <Object>
- allowHalfOpen <boolean> 表明是否允許半開的TCP鏈接。默認:false。
- pauseOnConnect <boolean> 表明是否應該在傳入鏈接上暫停socket。默認:false。
- connectionListener <Function> 自動為'connection'事件設置一個監聽者。
- 返回:<net.Server>
創建一個新的TCP,或者IPC服務器。
如果allowHalfOpen設置為true,當socket的另一端發送一個FIN包時,當明確調用socket.end()時服務器將只會發送一個FIN包返回,直到那時鏈接是半關閉(不可讀但是可寫)。參考'end'事件和FRC 1122(4.2.2.13章)獲得更多信息。
如果pauseOnConnect設置為true,則每個傳入的鏈接關聯的socket都將暫停,并且從他的句柄里面讀不到任何數據。這允許鏈接在進程間傳遞,并且原始進程不讀取任何數據。開始從暫停的socket中讀取數據,調用socket.resume()。
服務器可以是一個TCP服務器,或者一個IPC服務器,取決于listen()什么。
下面是一個TCP回聲服務器的例子,它監聽的是8124端口:
const net = require('net'); const server = net.createServer((c) => {// 'connection' listenerconsole.log('client connected');c.on('end', () => {console.log('client disconnected');});c.write('hellorn');c.pipe(c); }); server.on('error', (err) => {throw err; }); server.listen(8124, () => {console.log('server bound'); });使用telnet測試它:
$ telnet localhost 8124
要監聽在socket的/tmp/echo.sock上,最后三行應該改為:
使用nc去連接到一個UNIX域socket服務器上:
$ nc -U /tmp/echo.socknet.isIP(input)
在v0.3.0添加
- input <string>
- 返回: <integer>
檢查輸入是否是一個IP地址。返回0表示無效字符串,返回4表示IP的版本是4,返回6表示IP的版本是6。
net.isIPv4(input)
在v0.3.0添加
- input <string>
- 返回: <boolean>
如果輸入的地址是IPv4則返回true,否則返回false。
net.isIPv6(input)
在v0.3.0添加
- input <string>
- 返回: <boolean>
如果輸入的地址是IPv6則返回true,否則返回false。
總結
以上是生活随笔為你收集整理的js监听iframe关闭_Node.js文档NET[翻译]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python numpy逆_numpy.
- 下一篇: 快手用旺旺瓶子做机器人_用罐头瓶子做醪糟