该 API 还在 beta 测试中,仅对 beta 分支dev 分支的 Chrome 用户可用。

chrome.bluetoothSocket

描述 使用 chrome.bluetoothSocket API 通过 RFCOMM 和 L2CAP 连接向蓝牙设备接收和发送数据。
可用版本 从 Chrome 37 开始支持。警告:目前为 Beta 分支。了解更多内容
清单文件 "bluetooth": {...}
了解更多 蓝牙

摘要

类型
SocketProperties
ListenOptions
SocketInfo
方法
create chrome.bluetoothSocket.create( SocketProperties properties, function callback)
update chrome.bluetoothSocket.update(integer socketId, SocketProperties properties, function callback)
setPaused chrome.bluetoothSocket.setPaused(integer socketId, boolean paused, function callback)
listenUsingRfcomm chrome.bluetoothSocket.listenUsingRfcomm(integer socketId, string uuid, ListenOptions options, function callback)
listenUsingL2cap chrome.bluetoothSocket.listenUsingL2cap(integer socketId, string uuid, ListenOptions options, function callback)
connect chrome.bluetoothSocket.connect(integer socketId, string address, string uuid, function callback)
disconnect chrome.bluetoothSocket.disconnect(integer socketId, function callback)
close chrome.bluetoothSocket.close(integer socketId, function callback)
send chrome.bluetoothSocket.send(integer socketId, ArrayBuffer data, function callback)
getInfo chrome.bluetoothSocket.getInfo(integer socketId, function callback)
getSockets chrome.bluetoothSocket.getSockets(function callback)
事件
onAccept
onAcceptError
onReceive
onReceiveError

类型

SocketProperties

属性
boolean (可选)
persistent

应用的事件页面卸载(参见管理应用的生命周期)时是否使套接字保持打开状态,默认值为 false。应用加载后,之前使用 persistent: true 打开的套接字可以通过 getSockets 获取。

string (可选)
name

与套接字相关联的字符串,由应用定义。

integer (可选)
bufferSize

用于接收数据的缓冲区大小,默认值为 4096。

ListenOptions

属性
integer (可选)
channel

listenUsingRfcomm 使用的 RFCOMM 通道。如果指定了该属性,指定的通道不能处于使用中的状态,否则该方法的调用会失败。如果未指定,则自动分配未使用的通道。

integer (可选)
psm

listenUsingL2cap 使用的 L2CAP PSM。如果指定了该属性,指定的 PSM 不能处于使用中的状态,否则该方法的调用会失败。如果未指定,则自动分配未使用的 PSM。

integer (可选)
backlog

套接字监听队列的长度,默认值取决于操作系统的主机子系统。

SocketInfo

属性
integer socketId

套接字标识符。

boolean persistent

应用关闭时(参见 SocketProperties.persistent)套接字是否保持打开状态。

string (可选)
name

与套接字相关联的字符串,由应用定义。

integer (可选)
bufferSize

用于接收数据的缓冲区大小。如果没有明确指定缓冲区大小,则不提供该属性的值。

boolean paused

表示已连接的套接字是否阻止对方发送更多数据,或者正在监听的套接字上的连接请求是通过 onAccept 事件分发还是放入监听后备队列中。请参见 setPaused,默认值为 false

boolean connected

表示套接字是否已经连接到远程计算机。

string (可选)
address

如果下层套接字已连接,则包含连接设备的蓝牙地址。

string (可选)
uuid

如果下层套接字已连接,则包含连接的服务 UUID 相关信息;如果下层套接字处于监听状态,则包含正在监听的服务 UUID。

方法

create

chrome.bluetoothSocket.create( SocketProperties properties, function callback)

创建蓝牙套接字。

参数
SocketProperties (可选)
properties

套接字属性(可选)。

function callback

套接字创建后调用。

callback 参数应该是一个如下形式的函数:

function(object createInfo) {...};
object createInfo

套接字创建的结果。

integer socketId

新创建套接字的标识符。注意,该 API 中创建的套接字标识符和其他 API 中创建的套接字标识符不兼容,例如 sockets.tcp API。

update

chrome.bluetoothSocket.update(integer socketId, SocketProperties properties, function callback)

更新套接字属性。

参数
integer socketId

套接字标识符。

SocketProperties properties

要更新的属性。

function (可选)
callback

属性更新后调用。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

setPaused

chrome.bluetoothSocket.setPaused(integer socketId, boolean paused, function callback)

允许或阻止已连接的套接字从对方接收消息,或者正在监听的套接字接受新连接,默认值为 false。应用通常使用暂停套接字的方式限制对方发送的数据。已连接的套接字暂停后不会产生 onReceive 事件,套接字已连接并且取消暂停时,接收到消息后就会产生 onReceive 事件。正在监听的套接字暂停后,还会接受新连接,直到后备队列已满,接下来其他连接请求就会被拒绝。只有套接字不处于暂停状态时才会产生 onAccept 事件。

参数
integer socketId
boolean paused
function (可选)
callback

setPaused 方法的回调函数。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

listenUsingRfcomm

chrome.bluetoothSocket.listenUsingRfcomm(integer socketId, string uuid, ListenOptions options, function callback)

使用 RFCOMM 协议监听套接字。

参数
integer socketId

套接字标识符。

string uuid

要监听的服务 UUID。

ListenOptions (可选)
options

该服务的其他可选选项。

function callback

监听操作完成后调用。

callback 参数应该是一个如下形式的函数:

function() {...};

listenUsingL2cap

chrome.bluetoothSocket.listenUsingL2cap(integer socketId, string uuid, ListenOptions options, function callback)

使用 L2CAP 协议监听连接。

参数
integer socketId

套接字标识符。

string uuid

要监听的服务 UUID。

ListenOptions (可选)
options

该服务的其他可选选项。

function callback

监听操作完成后调用。

callback 参数应该是一个如下形式的函数:

function() {...};

connect

chrome.bluetoothSocket.connect(integer socketId, string address, string uuid, function callback)

参数
integer socketId

套接字标识符。

string address

蓝牙设备地址。

string uuid

要连接的服务 UUID。

function callback

连接尝试完成后调用。

callback 参数应该是一个如下形式的函数:

function() {...};

disconnect

chrome.bluetoothSocket.disconnect(integer socketId, function callback)

断开套接字的连接,套接字标识符仍然有效。

参数
integer socketId

套接字标识符。

function (可选)
callback

断开连接的尝试完成后调用。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

close

chrome.bluetoothSocket.close(integer socketId, function callback)

断开连接并释放套接字,创建的所有套接字使用完之后都必须释放。一旦调用该函数,套接字标识符就不再有效。但是只有调用回调函数时,套接字才确保已经关闭。

参数
integer socketId

套接字标识符。

function (可选)
callback

close 操作完成后调用。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

send

chrome.bluetoothSocket.send(integer socketId, ArrayBuffer data, function callback)

在指定蓝牙套接字上发送数据。

参数
integer socketId

套接字标识符。

ArrayBuffer data

要发送的数据。

function (可选)
callback

调用时传递发送的字节数。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function(integer bytesSent) {...};
integer bytesSent

发送的字节数。

getInfo

chrome.bluetoothSocket.getInfo(integer socketId, function callback)

获取指定套接字的状态。

参数
integer socketId

套接字标识符。

function callback

套接字状态可用时调用。

callback 参数应该是一个如下形式的函数:

function( SocketInfo socketInfo) {...};
SocketInfo socketInfo

包含套接字信息的对象。

getSockets

chrome.bluetoothSocket.getSockets(function callback)

获取应用拥有的当前打开的套接字列表。

参数
function callback

套接字列表可用时调用。

callback 参数应该是一个如下形式的函数:

function(array of SocketInfo sockets) {...};
array of SocketInfo sockets

事件

onAccept

某个套接字上建立连接时产生。

addListener

chrome.bluetoothSocket.onAccept.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object info) {...};
object info

事件数据。

integer socketId

服务器的套接字标识符。

integer clientSocketId

客户端的套接字标识符,即新建立的连接对应的套接字标识符,该套接字标识符只能在 chrome.bluetoothSocket 命名空间的函数中使用。注意,客户端套接字一开始处于暂停状态,应用必须显式取消暂停才能开始接收数据。

onAcceptError

运行时在某个套接字上等待新连接时如果发生网络错误则产生该事件。一旦产生了该事件,套接字将设置为暂停状态(paused),而且不会再产生 onAccept 事件。

addListener

chrome.bluetoothSocket.onAcceptError.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object info) {...};
object info

事件数据。

integer socketId

服务器的套接字标识符。

string errorMessage

错误消息。

enum of "system_error", or "not_listening" error

表示错误信息的错误码。

system_error
发生系统错误,连接可能无法恢复。
not_listening
套接字未处于监听状态。

onReceive

某个套接字上接收到数据时产生。

addListener

chrome.bluetoothSocket.onReceive.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object info) {...};
object info

事件数据。

integer socketId

套接字标识符。

ArrayBuffer data

接收到的数据,最大大小为 bufferSize

onReceiveError

运行时等待该套接字上的数据时如果发生网络错误则产生该事件。一旦产生该事件后,套接字将设置为 paused(暂停)状态,不再产生 onReceive 事件。

addListener

chrome.bluetoothSocket.onReceiveError.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object info) {...};
object info

事件数据。

integer socketId

套接字标识符。

string errorMessage

错误消息。

enum of "disconnected", "system_error", or "not_connected" error

表示错误信息的错误码。

disconnected
连接已经断开。
system_error
发生系统错误,连接可能无法恢复。
not_connected
套接字未连接。