物件TcpServer
TcpServer` 是高並發的TCPSocket伺服器,可以用來建立一個初始狀態下已經與客戶端建立了TCP 連線的TCP 伺服器
使用TcpServer
物件可以迅速建立一個多纖程並發處理的TCP 伺服器。當有客戶端連接到這個監聽的位址時,回呼函數會被呼叫並傳回一個新的被連接的 對象Socket
,我們可以使用這個物件來往客戶端發送或接收TCP 封包。
以下是一個基於TcpServer
物件來實現的回寫客戶端TCP 封包的具體範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14const net = require("net");
function onConnect(conn) {
console.log(`new client accepted! local:${conn.localAddress}, remote:${conn.remoteAddress}`);
const data = conn.read();
if (data) {
console.log(`recv data on fn onConnect: ${data}`);
conn.write(data);
}
conn.close();
}
new net.TcpServer('0.0.0.0', 8080, onConnect).start();
console.log('server is running on port: 8080');
在上述程式碼中,我們建立了一個TcpServer
物件並透過回呼函數onConnect
來處理接收到的客戶端請求訊息,將其中的資料回寫到客戶端。
當啟動這個服務時,它將監聽 連接8080
埠上面的所有IP 位址和請求,當你透過telnet
或其他客戶端工具連接到該服務時,你將會看到服務列印連接訊息,並將你發送的每一條請求原樣發送回去。
繼承關係
建構函數
TcpServer
TcpServer 建構函數,在所有本機位址偵聽
1
2new TcpServer(Integer port,
Handler listener);
呼叫參數:
- port: Integer, 指定tcp 伺服器偵聽端口
- listener:Handler, 指定tcp 接收的內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
TcpServer 建構函數
1
2
3new TcpServer(String addr,
Integer port,
Handler listener);
呼叫參數:
- addr: String, 指定tcp 伺服器偵聽位址,為"" 則在本機所有位址偵聽
- port: Integer, 指定tcp 伺服器偵聽端口
- listener:Handler, 指定tcp 接收的連接的內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
TcpServer 建構函數
1
2new TcpServer(String addr,
Handler listener);
呼叫參數:
- addr: String, 指定unix socket 或Windows pipe 伺服器偵聽位址
- listener:Handler, 指定tcp 接收的連接的內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
成員屬性
socket
1readonly Socket TcpServer.socket;
handler
Handler, 伺服器目前事件處理介面對象
1Handler TcpServer.handler;
成員函數
start
啟動目前伺服器
1TcpServer.start();
stop
關閉socket中止正在運作的伺服器
1TcpServer.stop() async;
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String TcpServer.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value TcpServer.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值