說明
使用 chrome.sockets.udp
API 透過 UDP 連線透過網路傳送及接收資料。這個 API 取代先前在「通訊端」中的 UDP 功能也能使用 Google Cloud CLI 或
Compute Engine API
資訊清單
類型
CreateInfo
屬性
-
socketId
數字
新建立的通訊端的 ID。請注意,透過這個 API 建立的通訊端 ID 與其他 API 建立的通訊端 ID (例如已淘汰的
[
socket](../socket/)
API) 相容。
DnsQueryType
DNS 解析偏好設定。預設值為 any
,且會使用目前的 OS 設定,這可能會傳回 IPv4 或 IPv6。ipv4
會強制 IPv4,ipv6
則強制使用 IPv6。
列舉
"any"
"ipv4"
"ipv6"
ReceiveErrorInfo
屬性
-
resultCode
數字
基礎 recvfrom() 呼叫傳回的結果代碼。
-
socketId
數字
通訊端 ID。
ReceiveInfo
屬性
-
資料
ArrayBuffer
UDP 封包內容 (截斷至目前的緩衝區大小)。
-
remoteAddress
字串
封包的來源主機位址。
-
remotePort
數字
封包的來源主機通訊埠。
-
socketId
數字
通訊端 ID。
SendInfo
屬性
-
bytesSent
編號 選填
傳送的位元組數 (如果結果 == 0)
-
resultCode
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
SocketInfo
屬性
-
bufferSize
編號 選填
用於接收資料的緩衝區大小。如未明確指定緩衝區空間,則不提供此值。
-
localAddress
string optional
如果基礎通訊端已繫結,則包含其本機 IPv4/6 位址。
-
localPort
編號 選填
如果基礎通訊端已繫結,則包含其本機通訊埠。
-
名稱
string optional
與通訊端相關聯的應用程式定義字串。
-
已暫停
布林值
此標記用於指出通訊端是否遭到封鎖,無法觸發 onReceive 事件。
-
永久
布林值
此標記用於指出當應用程式暫停時,通訊端是否保持開啟 (請參閱
SocketProperties.persistent
)。 -
socketId
數字
通訊端 ID。
SocketProperties
屬性
-
bufferSize
編號 選填
用於接收資料的緩衝區大小。如果緩衝區太小,無法接收 UDP 封包,資料就會遺失。預設值為 4096。
-
名稱
string optional
與通訊端相關聯的應用程式定義字串。
-
永久
布林值 選填
此標記用於指出當應用程式的事件頁面卸載時,通訊端是否保持開啟 (請參閱管理應用程式生命週期)。預設值為「false」。載入應用程式時,可使用
getSockets
擷取先前透過 Persistent=true 開啟的任何通訊端。
方法
bind()
chrome.sockets.udp.bind(
socketId: number,
address: string,
port: number,
callback: function,
)
繫結通訊端的本機位址和通訊埠。如果是用戶端通訊端,建議使用通訊埠 0,讓平台挑選免費通訊埠。
成功完成 bind
作業後,除非通訊端已暫停,否則 UDP 封包到達指定位址/通訊埠時,會引發 onReceive
事件。
參數
-
socketId
數字
通訊端 ID。
-
地址
字串
本機電腦的位址。支援 DNS 名稱、IPv4 和 IPv6 格式。請使用「0.0.0.0」接收來自所有本機可用網路介面的封包。
-
通訊埠
數字
本機電腦的通訊埠。使用「0」繫結至免費通訊埠
-
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
-
close()
chrome.sockets.udp.close(
socketId: number,
callback?: function,
)
關閉通訊端並釋出通訊端繫結的位址/通訊埠。每個建立的通訊端都應在使用後關閉。呼叫函式後,通訊端 ID 就會失效。不過,只有在叫用回呼時,通訊端一定才保證關閉。
參數
-
socketId
數字
通訊端 ID。
-
回呼
函式 選用
callback
參數如下所示:() => void
傳回
-
承諾<void>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
create()
chrome.sockets.udp.create(
properties?: SocketProperties,
callback?: function,
)
建立具有指定屬性的 UDP 通訊端。
參數
-
資源
通訊端屬性 (選用)。
-
回呼
函式 選用
callback
參數如下所示:(createInfo: CreateInfo) => void
-
createInfo
建立通訊端的結果。
-
傳回
-
Promise<CreateInfo>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
getInfo()
chrome.sockets.udp.getInfo(
socketId: number,
callback?: function,
)
擷取指定通訊端的狀態。
參數
-
socketId
數字
通訊端 ID。
-
回呼
函式 選用
callback
參數如下所示:(socketInfo: SocketInfo) => void
-
socketInfo
包含通訊端資訊的物件。
-
傳回
-
Promise<SocketInfo>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
getJoinedGroups()
chrome.sockets.udp.getJoinedGroups(
socketId: number,
callback?: function,
)
取得通訊端目前加入的多點傳播群組位址。
參數
-
socketId
數字
通訊端 ID。
-
回呼
函式 選用
callback
參數如下所示:(groups: string[]) => void
-
群組
string[]
通訊端加入的群組陣列。
-
傳回
-
Promise<string[]>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
getSockets()
chrome.sockets.udp.getSockets(
callback?: function,
)
擷取應用程式擁有且目前開啟的通訊端清單。
參數
-
回呼
函式 選用
callback
參數如下所示:(socketInfos: SocketInfo[]) => void
-
socketInfos
包含通訊端資訊的物件陣列。
-
傳回
-
Promise<SocketInfo[]>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
joinGroup()
chrome.sockets.udp.joinGroup(
socketId: number,
address: string,
callback: function,
)
加入多點傳播群組,並開始接收來自該群組的封包。在呼叫此方法前,通訊端必須繫結至本機通訊埠。
參數
-
socketId
數字
通訊端 ID。
-
地址
字串
要加入的群組地址。不支援網域名稱。
-
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
-
leaveGroup()
chrome.sockets.udp.leaveGroup(
socketId: number,
address: string,
callback: function,
)
退出先前使用 joinGroup
加入的多點傳播群組。只有在您之後打算繼續使用通訊端時,才需要呼叫 ,因為在通訊端關閉時,OS 將自動執行此通訊。
離開群組會讓路由器無法將多點傳播資料元傳送至本機主機,假設主機上沒有其他程序仍加入群組。
參數
-
socketId
數字
通訊端 ID。
-
地址
字串
要退出的群組地址。不支援網域名稱。
-
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
-
send()
chrome.sockets.udp.send(
socketId: number,
data: ArrayBuffer,
address: string,
port: number,
dnsQueryType?: DnsQueryType,
callback: function,
)
這個外掛程式能將指定通訊端的資料傳送至指定的位址和通訊埠。在呼叫此方法前,通訊端必須繫結至本機通訊埠。
參數
-
socketId
數字
通訊端 ID。
-
資料
ArrayBuffer
要傳送的資料。
-
地址
字串
遠端電腦的位址。
-
通訊埠
數字
遠端電腦的通訊埠。
-
dnsQueryType
DnsQueryType 選用
Chrome 103 以上版本地址解析偏好設定。
-
回呼
函式
callback
參數如下所示:(sendInfo: SendInfo) => void
-
sendInfo
send
方法的結果。
-
setBroadcast()
chrome.sockets.udp.setBroadcast(
socketId: number,
enabled: boolean,
callback: function,
)
啟用或停用這個通訊端的廣播封包。
參數
-
socketId
數字
通訊端 ID。
-
已啟用
布林值
如要啟用廣播封包,請
true
,false
即可停用。 -
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。
-
setMulticastLoopbackMode()
chrome.sockets.udp.setMulticastLoopbackMode(
socketId: number,
enabled: boolean,
callback: function,
)
設定從主機傳送至多點傳播群組的多點傳播封包是否會重新送回主機。
注意:setMulticastLoopbackMode
的行為在 Windows 和 Unix 類系統上稍有不同。只有當同一主機上的多個應用程式加入同一個多點傳播群組,同時在多點傳播回送模式下套用不同設定時,才會出現不一致的情況。在 Windows 中,關閉回送功能的應用程式不會接收回送封包;在 Unix 類系統上時,關閉回送功能的應用程式將不會傳送回送封包至同一主機上的其他應用程式。請參閱 MSDN:http://goo.gl/6vqbj
呼叫這個方法不需要多點傳播權限。
參數
-
socketId
數字
通訊端 ID。
-
已啟用
布林值
表示是否要啟用回送模式。
-
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
-
setMulticastTimeToLive()
chrome.sockets.udp.setMulticastTimeToLive(
socketId: number,
ttl: number,
callback: function,
)
設定傳送至多點傳播群組的多點傳送封包的存留時間。
呼叫這個方法不需要多點傳播權限。
參數
-
socketId
數字
通訊端 ID。
-
文字轉語音
數字
存留時間值。
-
回呼
函式
callback
參數如下所示:(result: number) => void
-
結果
數字
基礎網路呼叫傳回的結果代碼。負值表示發生錯誤。
-
setPaused()
chrome.sockets.udp.setPaused(
socketId: number,
paused: boolean,
callback?: function,
)
暫停或取消暫停通訊端。已暫停的通訊端無法觸發 onReceive
事件。
參數
-
socketId
數字
-
已暫停
布林值
此標記用於註明是否要暫停或取消暫停。
-
回呼
函式 選用
callback
參數如下所示:() => void
傳回
-
承諾<void>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
update()
chrome.sockets.udp.update(
socketId: number,
properties: SocketProperties,
callback?: function,
)
更新通訊端屬性。
參數
-
socketId
數字
通訊端 ID。
-
要更新的屬性。
-
回呼
函式 選用
callback
參數如下所示:() => void
傳回
-
承諾<void>
Chrome 121 以上版本Promise 僅適用於 Manifest V3 及以上版本,其他平台需要使用回呼。
活動
onReceive
chrome.sockets.udp.onReceive.addListener(
callback: function,
)
系統收到指定通訊端的 UDP 封包時引發事件。
參數
-
回呼
函式
callback
參數如下所示:(info: ReceiveInfo) => void
-
資訊
-
onReceiveError
chrome.sockets.udp.onReceiveError.addListener(
callback: function,
)
當執行階段等待通訊端位址和通訊埠中的資料時,發生網路錯誤,就會引發事件。引發此事件後,通訊端會暫停,而且在通訊端恢復運作之前,通訊端不會再引發其他 onReceive
事件。
參數
-
回呼
函式
callback
參數如下所示:(info: ReceiveErrorInfo) => void