说明
使用 chrome.sockets.tcpServer
API 通过 TCP 连接创建服务器应用。此 API 取代了之前在 chrome.socket
API 中提供的 TCP 功能。
清单
类型
AcceptErrorInfo
属性
-
resultCode
数值
底层网络调用返回的结果代码。
-
socketId
数值
服务器套接字标识符。
AcceptInfo
属性
-
clientSocketId
数值
客户端套接字标识符,即新建立的连接的套接字标识符。此套接字标识符应仅与
chrome.sockets.tcp
命名空间中的函数搭配使用。请注意,客户端套接字最初处于暂停状态,必须由应用明确取消暂停才能开始接收数据。 -
socketId
数值
服务器套接字标识符。
CreateInfo
属性
-
socketId
数值
新创建的服务器套接字的 ID。请注意,通过此 API 创建的套接字 ID 与通过其他 API(例如已弃用的
[
socket](../socket/)
API)创建的套接字 ID 不兼容。
SocketInfo
属性
-
localAddress
字符串(选填)
如果套接字处于监听状态,则包含其本地 IPv4/6 地址。
-
localPort
number 可选
如果套接字正在监听,则包含其本地端口。
-
name
字符串(选填)
与套接字关联的应用定义的字符串。
-
已暂停
布尔值
标志,用于指示监听套接字上的连接请求是通过
onAccept
事件分派还是在监听队列积压中排队。请参阅setPaused
。默认值为 “False”。 -
持久性
布尔值
一个标志,用于指示当应用的事件页面卸载时,套接字是否保持打开状态(请参阅
SocketProperties.persistent
)。默认值为“false”。 -
socketId
数值
套接字标识符。
SocketProperties
属性
-
name
字符串(选填)
与套接字关联的应用定义的字符串。
-
持久性
布尔值(可选)
一个标志,用于指示当应用事件页面卸载时,套接字是否保持打开状态(请参阅管理应用生命周期)。默认值为“false”。加载应用后,可以使用
getSockets
获取之前使用 persistent=true 打开的任何套接字。
方法
close()
chrome.sockets.tcpServer.close(
socketId: number,
callback?: function,
): Promise<void>
断开连接并销毁套接字。创建的每个套接字都应在使用后关闭。一旦调用该函数,套接字 ID 便不再有效。不过,只有在调用回调时,才能保证套接字已关闭。
参数
-
socketId
数值
套接字标识符。
-
callback
函数 可选
callback
参数如下所示:() => void
返回
-
Promise<void>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
create()
chrome.sockets.tcpServer.create(
properties?: SocketProperties,
callback?: function,
): Promise<CreateInfo>
创建 TCP 服务器套接字。
参数
-
媒体资源
套接字属性(可选)。
-
callback
函数 可选
callback
参数如下所示:(createInfo: CreateInfo) => void
-
createInfo
套接字创建结果。
-
返回
-
Promise<CreateInfo>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
disconnect()
chrome.sockets.tcpServer.disconnect(
socketId: number,
callback?: function,
): Promise<void>
断开监听套接字,即停止接受新连接并释放套接字绑定的地址/端口。套接字标识符仍然有效,例如,它可以与 listen
结合使用,以接受新端口和地址上的连接。
参数
-
socketId
数值
套接字标识符。
-
callback
函数 可选
callback
参数如下所示:() => void
返回
-
Promise<void>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getInfo()
chrome.sockets.tcpServer.getInfo(
socketId: number,
callback?: function,
): Promise<SocketInfo>
检索给定套接字的状态。
参数
-
socketId
数值
套接字标识符。
-
callback
函数 可选
callback
参数如下所示:(socketInfo: SocketInfo) => void
-
socketInfo
包含套接字信息的对象。
-
返回
-
Promise<SocketInfo>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getSockets()
chrome.sockets.tcpServer.getSockets(
callback?: function,
): Promise<SocketInfo[]>
检索应用当前拥有的已打开套接字的列表。
参数
-
callback
函数 可选
callback
参数如下所示:(socketInfos: SocketInfo[]) => void
-
socketInfos
包含套接字信息的对象数组。
-
返回
-
Promise<SocketInfo[]>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
listen()
chrome.sockets.tcpServer.listen(
socketId: number,
address: string,
port: number,
backlog?: number,
callback: function,
): void
在指定端口和地址上侦听连接。如果端口/地址正在使用,回调会指示失败。
参数
-
socketId
数值
套接字标识符。
-
地址
字符串
本地计算机的地址。
-
端口
数值
本地机器的端口。如果设置为
0
,系统会动态选择一个空闲端口。您可以通过调用getInfo
找到动态分配的端口。 -
backlog
number 可选
套接字侦听队列的长度。默认值取决于操作系统 (SOMAXCONN),可确保大多数应用的队列长度合理。
-
callback
函数
callback
参数如下所示:(result: number) => void
-
结果
数值
从底层网络调用返回的结果代码。负值表示存在错误。
-
setPaused()
chrome.sockets.tcpServer.setPaused(
socketId: number,
paused: boolean,
callback?: function,
): Promise<void>
启用或停用监听套接字接受新连接。当监听套接字处于暂停状态时,它会接受新的连接,直到其积压(请参阅 listen
函数)达到上限,然后拒绝其他连接请求。仅当套接字处于未暂停状态时,才会引发 onAccept
事件。
参数
-
socketId
数值
-
已暂停
布尔值
-
callback
函数 可选
callback
参数如下所示:() => void
返回
-
Promise<void>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
update()
chrome.sockets.tcpServer.update(
socketId: number,
properties: SocketProperties,
callback?: function,
): Promise<void>
更新套接字属性。
参数
-
socketId
数值
套接字标识符。
-
媒体资源
要更新的属性。
-
callback
函数 可选
callback
参数如下所示:() => void
返回
-
Promise<void>
Chrome 121 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
事件
onAccept
chrome.sockets.tcpServer.onAccept.addListener(
callback: function,
)
已连接到服务器套接字时引发的事件。
参数
-
callback
函数
callback
参数如下所示:(info: AcceptInfo) => void
-
资讯
-
onAcceptError
chrome.sockets.tcpServer.onAcceptError.addListener(
callback: function,
)
当运行时在套接字地址和端口上等待新连接时发生网络错误时引发的事件。一旦引发此事件,套接字就会设置为 paused
,并且在套接字恢复之前,不会再针对此套接字引发 onAccept
事件。
参数
-
callback
函数
callback
参数如下所示:(info: AcceptErrorInfo) => void