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()socketsocketmessage

error 事件

當有任何錯誤發生時,error

listening 事件

當一個 該事件會在創建UDP socket 之後被立即觸發。socketlistening

message 事件

當有新的數據包被 socketmessagemsgrinfo

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

繼承關係

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<class>EventEmitter|new EventEmitter()|EventEmitter|defaultMaxListeners|on();addListener();prependListener();once();prependOnceListener();off();removeListener();removeAllListeners();setMaxListeners();getMaxListeners();listeners();listenerCount();eventNames();emit()] [<this>DgramSocket|bind();send();address();close();getRecvBufferSize();getSendBufferSize();setRecvBufferSize();setSendBufferSize();setBroadcast();ref();unref()] [object] <:- [EventEmitter] [EventEmitter] <:- [DgramSocket] EventEmitter new EventEmitter() EventEmitter defaultMaxListeners on() addListener() prependListener() once() prependOnceListener() off() removeListener() removeAllListeners() setMaxListeners() getMaxListeners() listeners() listenerCount() eventNames() emit() object toString() toJSON() DgramSocket bind() send() address() close() getRecvBufferSize() getSendBufferSize() setRecvBufferSize() setSendBufferSize() setBroadcast() ref() unref()

靜態屬性

defaultMaxListeners

Integer, 默認全局最大監聽器數

1
static Integer DgramSocket.defaultMaxListeners;

成員函數

bind

該方法會令 dgram.Socket在指定的 綁定完成時會觸發一個 portaddrlistening

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

調用參數:

  • port: Integer, 指定綁定端口,若 port
  • addr: String, 指定綁定地址,若address 未指定,操作系統會嘗試在所有地址上監聽。

該方法會令 dgram.Socket綁定完成時會觸發一個 optsportaddresslistening

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, 返回查詢結果

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 序列化的值