Object 內建對象

物件DgramSocket

dgram.Socket物件是一個封裝了資料包函數功能的EventEmitter

DgramSocket 實例是由dgram.createSocket() 創建的。創建dgram.Socket實例不需要使用new 關鍵字。

創建方法:

1 2
var dgram = require('dgram'); var sock = dgram.createSocket('udp4');

事件

DgramSocket 繼承於EventEmitter,物件的狀態變化,以及資料接受,都是以事件的方式實現。

close 事件

close事件將在使用close()關閉一個socket之後觸發。該事件一旦觸發,這個socket上將不會觸發新的message事件。

error 事件

當有任何錯誤發生時,error事件將被觸發。

listening 事件

當一個socket開始監聽封包資訊時,listening事件將會被觸發。該事件會在建立UDP socket 之後被立即觸發。

message 事件

當有新的資料包被socket接收時,message事件會被觸發。msgrinfo會作為參數傳遞到該事件的處理函數中。

  • msg:Buffer,訊息
  • rinfo: Object,遠端位址訊息
    • address: string,發送方地址
    • family: string,位址類型('IPv4' or 'IPv6')
    • port: number,發送者端口
    • size: number,訊息大小

繼承關係

靜態屬性

defaultMaxListeners

Integer, 預設全域最大監聽器數

1
static Integer DgramSocket.defaultMaxListeners;

成員函數

bind

該方法會令dgram.Socket在指定的portaddr上監聽資料包資訊。綁定完成時會觸發一個listening事件。

1 2
DgramSocket.bind(Integer port = 0, String addr = "") async;

呼叫參數:

  • port: Integer, 指定綁定端口,若port未指定或為0,作業系統會嘗試綁定一個隨機的端口
  • addr: String, 指定綁定位址,若address 未指定,作業系統會嘗試在所有位址上監聽。

該方法會令dgram.Socketopts指定的portaddress上監聽資料包資訊。綁定完成時會觸發一個listening事件。

1
DgramSocket.bind(Object opts) async;

呼叫參數:

  • opts: Object, 指定綁定參數

send

在socket 上發送一個資料包

1 2 3
Integer DgramSocket.send(Buffer msg, Integer port, String address = "") async;

呼叫參數:

  • msg:Buffer, 指定發送的數據
  • port: Integer, 指定發送的目的端口
  • address: String, 指定發送的目的位址

回傳結果:

  • Integer, 回傳尺寸

在socket 上發送一個資料包

1 2 3 4 5
Integer DgramSocket.send(Buffer msg, Integer offset, Integer length, Integer port, String address = "") async;

呼叫參數:

  • msg:Buffer, 指定發送的數據
  • offset: Integer, 從指定偏移開始發送
  • length: Integer, 之發送指定長度
  • port: Integer, 指定發送的目的端口
  • address: String, 指定發送的目的位址

回傳結果:

  • Integer, 回傳尺寸

address

傳回一個包含socket 位址資訊的物件。對於UDP socket,該物件將包含address、family 和port 屬性。

1
NObject DgramSocket.address();

回傳結果:

  • NObject, 回傳物件綁定地址

close

關閉目前socket

1
DgramSocket.close();

關閉目前socket

1
DgramSocket.close(Function callback);

呼叫參數:

  • callback: Function, 關閉完成後的回呼函數,它相當於為close事件新增了一個監聽器

getRecvBufferSize

查詢socket 接收緩衝區大小

1
Integer DgramSocket.getRecvBufferSize();

回傳結果:

  • Integer, 回傳查詢結果

getSendBufferSize

查詢socket 發送緩衝區大小

1
Integer DgramSocket.getSendBufferSize();

回傳結果:

  • Integer, 回傳查詢結果

addMembership

使用IP_ADD_MEMBERSHIP 套接字選項加入給定multicastAddress 和multicastInterface 處的多重播放群組。如果未指定multicastInterface 參數,作業系統將選擇一個介面並向其新增成員資格。若要為每個可用介面新增成員資格,請多次呼叫addMembership ,每個介面呼叫一次。

1 2
DgramSocket.addMembership(String multicastAddress, String multicastInterface = "");

呼叫參數:

  • multicastAddress: String, 指定要加入的多重播放群組位址
  • multicastInterface: String, 指定要加入的多播群組介面

dropMembership

使用IP_DROP_MEMBERSHIP 套接字選項在multicastAddress 處留下多播群組。當套接字關閉或進程終止時,核心會自動呼叫此方法,因此大多數應用程式永遠沒有理由呼叫此方法。

1 2
DgramSocket.dropMembership(String multicastAddress, String multicastInterface = "");

呼叫參數:

  • multicastAddress: String, 指定要刪除的多重播放群組位址
  • multicastInterface: String, 指定要刪除的多重播放群組介面

setMulticastTTL

設定IP_MULTICAST_TTL 套接字選項

1
DgramSocket.setMulticastTTL(Integer ttl);

呼叫參數:

  • ttl: Integer, 指定要設定的ttl,ttl 參數可以介於0 和255 之間。大多數系統上的預設值為1。

setRecvBufferSize

設定socket 接收緩衝區大小

1
DgramSocket.setRecvBufferSize(Integer size);

呼叫參數:

  • size: Integer, 指定要設定的尺寸

setSendBufferSize

設定socket 發送緩衝區大小

1
DgramSocket.setSendBufferSize(Integer size);

呼叫參數:

  • size: Integer, 指定要設定的尺寸

setBroadcast

設定或清除SO_BROADCAST socket 選項

1
DgramSocket.setBroadcast(Boolean flag);

呼叫參數:

  • flag: Boolean, 當設定為true, UDP封包會被傳送到一個本地介面的廣播位址

ref

維持fibjs 程序不退出,在物件綁定期間阻止fibjs 進程退出

1
DgramSocket DgramSocket.ref();

回傳結果:

  • DgramSocket, 傳回當前對象

unref

允許fibjs 進程退出,在物件綁定期間允許fibjs 進程退出

1
DgramSocket DgramSocket.unref();

回傳結果:

  • DgramSocket, 傳回當前對象

on

綁定一個事件處理函數到對象

1 2
Object DgramSocket.on(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

綁定一個事件處理函數到對象

1
Object DgramSocket.on(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

addListener

綁定一個事件處理函數到對象

1 2
Object DgramSocket.addListener(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

綁定一個事件處理函數到對象

1
Object DgramSocket.addListener(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

prependListener

綁定一個事件處理函數到物件起始

1 2
Object DgramSocket.prependListener(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

綁定一個事件處理函數到物件起始

1
Object DgramSocket.prependListener(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

once

綁定一個一次性事件處理函數到對象,一次性處理函數只會觸發一次

1 2
Object DgramSocket.once(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

綁定一個一次性事件處理函數到對象,一次性處理函數只會觸發一次

1
Object DgramSocket.once(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

prependOnceListener

綁定一個事件處理函數到物件起始

1 2
Object DgramSocket.prependOnceListener(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

綁定一個事件處理函數到物件起始

1
Object DgramSocket.prependOnceListener(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱將作為事件名稱,屬性的值將作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

off

從物件處理佇列中取消指定函數

1 2
Object DgramSocket.off(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

取消物件處理佇列中的全部函數

1
Object DgramSocket.off(String ev);

呼叫參數:

  • ev: String, 指定事件的名稱

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

從物件處理佇列中取消指定函數

1
Object DgramSocket.off(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱作為事件名稱,屬性的值作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

removeListener

從物件處理佇列中取消指定函數

1 2
Object DgramSocket.removeListener(String ev, Function func);

呼叫參數:

  • ev: String, 指定事件的名稱
  • func: Function, 指定事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

取消物件處理佇列中的全部函數

1
Object DgramSocket.removeListener(String ev);

呼叫參數:

  • ev: String, 指定事件的名稱

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

從物件處理佇列中取消指定函數

1
Object DgramSocket.removeListener(Object map);

呼叫參數:

  • map: Object, 指定事件映射關係,物件屬性名稱作為事件名稱,屬性的值作為事件處理函數

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

removeAllListeners

從物件處理佇列中取消所有事件的所有監聽器, 如果指定事件,則移除指定事件的所有監聽器。

1
Object DgramSocket.removeAllListeners(String ev);

呼叫參數:

  • ev: String, 指定事件的名稱

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

從物件處理佇列中取消所有事件的所有監聽器, 如果指定事件,則移除指定事件的所有監聽器。

1
Object DgramSocket.removeAllListeners(Array evs = []);

呼叫參數:

  • evs: Array, 指定事件的名稱

回傳結果:

  • Object, 傳回事件物件本身,便於鍊式調用

setMaxListeners

監聽器的預設限制的數量,僅用於相容

1
DgramSocket.setMaxListeners(Integer n);

呼叫參數:

  • n: Integer, 指定事件的數量

getMaxListeners

取得監聽器的預設限制的數量,僅用於相容

1
Integer DgramSocket.getMaxListeners();

回傳結果:

  • Integer, 回傳預設限制數量

listeners

查詢物件指定事件的監聽器陣列

1
Array DgramSocket.listeners(String ev);

呼叫參數:

  • ev: String, 指定事件的名稱

回傳結果:

  • Array, 傳回指定事件的監聽器數組

listenerCount

查詢物件指定事件的監聽器數量

1
Integer DgramSocket.listenerCount(String ev);

呼叫參數:

  • ev: String, 指定事件的名稱

回傳結果:

  • Integer, 傳回指定事件的監聽器數量

查詢物件指定事件的監聽器數量

1 2
Integer DgramSocket.listenerCount(Value o, String ev);

呼叫參數:

  • o: Value, 指定查詢的對象
  • ev: String, 指定事件的名稱

回傳結果:

  • Integer, 傳回指定事件的監聽器數量

eventNames

查詢監聽器事件名稱

1
Array DgramSocket.eventNames();

回傳結果:

  • Array, 傳回事件名稱數組

emit

主動觸發一個事件

1 2
Boolean DgramSocket.emit(String ev, ...args);

呼叫參數:

  • ev: String, 事件名稱
  • args: ..., 事件參數,將會傳遞給事件處理函數

回傳結果:

  • Boolean, 回傳事件觸發狀態,有回應事件回傳true,否則回傳false

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String DgramSocket.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value DgramSocket.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值