SOCKET模块

说明: 本模块首批接口从API version 1开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

简介

    本模块提供利用Socket进行数据传输的能力,支持TCPSocket、UDPSocket和TLSSocket。 

基本概念

  • Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

  • TCP:传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • UDP:用户数据报协议协议(User Datagram Protocol),是一个简单的面向消息的传输层,不需要连接。

  • TLS:安全传输层协议(Transport Layer Security),用于在两个通信应用程序之间提供保密性和数据完整性。

导入模块

import socket from '@system.socket';

constructUDPSocketInstance1+

constructUDPSocketInstance(): UDPSocket

创建一个UDPSocket对象。

返回值:

类型说明
UDPSocket返回一个UDPSocket对象。

示例:

let udp = socket.constructUDPSocketInstance();

UDPSocket1+

UDPSocket连接。在调用UDPSocket的方法前,需要先通过socket.constructUDPSocketInstance创建UDPSocket对象。

bind1+

bind(
    address: NetAddress,
    callback: AsyncCallback<number>
): void;

绑定IP地址和端口,端口可以指定或由系统随机分配,并且使用callback方式作为异步方法。

参数:

参数名类型必填说明
addressNetAddress目标地址信息。
callbackAsyncCallback<number>成功时返回socket的句柄fd号。

示例:

let udp = socket.constructUDPSocketInstance();
udp.bind(
    {
        address: {
            address: 'xxx.xxx.xxx',
            port: xxxx,
            family: xxx
        }
    }, 
    {
        callback: (err, fd) => {
            if (err) {
                console.log('bind fail.');
                return;
            }
            console.log('bind success. fd: ' + fd);
            g_fd = fd;
        }
    }
 )

send1+

send(
    fd: number,
    options: UDPSendOptions,
    callback: AsyncCallback<void>
): void;

通过UDPSocket连接发送数据,并且使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsUDPSendOptionsUDP发送参数。
callbackAsyncCallback<void>回调函数。

示例:

udp.send(
    {
        fd: g_fd
    },
    {
        options: {
            data:"12345", 
            address:{
                address: "xxx.xxx.xxx",
                family: xxx,
                port: xxx
            },
        }
    },
    {
        callback: function(err) {
            if (err) {
                console.error('send fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('send succ.');
            }
        }
    }
);

close1+

close(
	fd: number,
	callback: AsyncCallback<void>
): void;

关闭UDPSocket连接,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<void>回调函数。

示例:

udp.close(
    {
        fd: g_fd
    },
    {
        callback: function(err) {
            if (err) {
                console.error('close fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
        } else {
                console.log('close succ.');
            }
        }
    }
);

getState1+

getState(
	fd: number,
	callback: AsyncCallback<SocketStateBase>
): void;

获取UDPSocket状态,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

udp.getState(
    {
        fd: g_fd
    },
    {
        callback: function(err, state) {
            if (err) {
                console.error('getState fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getState fail. state.isBound:' + state.isBound + ', state.isClose: ' + state.isClose + ', state.isConnected: ' + state.isConnected);
            }
        }
    }
);

setExtraOptions1+

setExtraOptions(
	fd: number,
	options: UDPExtraOptions,
	callback: AsyncCallback<void>
): void;

设置UDPSocket连接的其他属性,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsUDPExtraOptionsUDPSocket连接的其他属性。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

udp.setExtraOptions(
    {
        fd: g_fd
    },
    {
        options: {
            broadcast:false,
            sendBufferSize:1024,
            receiveBufferSize:4399,
            reuseAddress:true,
            socketTimeout:60,
        }
    },
    {
        callback: function(err) {
            if (err) {
                console.error('setExtraOptions fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('setExtraOptions succ.');
            }
        }
    }
);

on('message')1+

on(
	fd: number,
	type: 'message',
	callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

订阅UDPSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

udp.on(
    {
        fd: g_fd
    },
    {
        type: 'message'
    },
    {
        callback: function(message, remoteInfo) {
            var array = new Uint8Array(message);
            console.log('message data: ' + array);
            console.log('message remoteInfo address: ' + remoteInfo.address + ', family: ' + remoteInfo.family + ', port: ' + remoteInfo.port + ', size: ' + remoteInfo.size);
        }
    }
);

off('message')1+

off(
	fd: number,
	type: 'message',
	callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

取消订阅UDPSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

udp.off(
    {
        fd: g_fd
    },
    {
        type: 'message'
    }
);

on('listening' | 'close')1+

on(
	fd: number,
	type: 'listening' | 'close',
	callback: Callback<void>
): void;

订阅UDPSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。 - 'listening':数据包消息事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

udp.on(
    {
		fd: g_fd
	},
	{
		type: 'listening'
	},
    {
    	callback: function() {
    		console.log('listening callback');
    	}
    }
);
udp.on(
    {
		fd: g_fd
	},
	{
		type: 'close'
	},
	{
		callback: function() {
			console.log('close callback');
		}
	}
);

off('listening' | 'close')1+

off(
	fd: number,
	type: 'listening' | 'close',
	callback?: Callback<void>
): void;

取消订阅UDPSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅事件类型。 - 'listening':数据包消息事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

udp.off(
    {
		fd: g_fd
	},
	{
		type: 'listening'
	}
);
udp.off(
    {
		fd: g_fd
	},
	{
		type: 'close'
	}
);

on('error')1+

on(
    fd: number,
    type: 'error',
    callback: ErrorCallback
): void;

订阅UDPSocket连接的error事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

udp.on(
    {
		fd: g_fd
    },
	{
		type: 'error'
	},
	{
		callback: function(err) {
			console.log('err code: ' + err);
		}
	}
);

off('error')1+

off(
	fd:number,
	type: 'error',
	callback?: ErrorCallback
): void;

取消订阅UDPSocket连接的error事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

udp.off(
    {
        fd: g_fd
    },
    {
        type: 'error'
    }
);

NetAddress1+

目标地址信息。

名称类型必填说明
addressstring本地绑定的ip地址。
portnumber端口号 ,范围0~65535。如果不指定系统随机分配端口。
familynumber网络协议类型,可选类型: - 1:IPv4 - 2:IPv6 默认为1。

UDPSendOptions1+

UDPSocket发送参数。

名称类型必填说明
datastring | ArrayBuffer发送的数据。
addressNetAddress目标地址信息。

UDPExtraOptions1+

UDPSocket连接的其他属性。

名称类型必填说明
broadcastboolean是否可以发送广播。默认为false。
receiveBufferSizenumber接收缓冲区大小(单位:Byte)。
sendBufferSizenumber发送缓冲区大小(单位:Byte)。
reuseAddressboolean是否重用地址。默认为false。
socketTimeoutnumber套接字超时时间,单位毫秒(ms)。

SocketStateBas1+

Socket的状态信息。

名称类型必填说明
isBoundboolean是否绑定。
isCloseboolean是否关闭。
isConnectedboolean是否连接。

SocketRemoteInfo1+

Socket的连接信息。

名称类型必填说明
addressstring本地绑定的ip地址。
familystring网络协议类型,可选类型: - IPv4 - IPv6 默认为IPv4。
portnumber端口号,范围0~65535。
sizenumber服务器响应信息的字节长度。

 

constructTCPSocketInstance1+

constructTCPSocketInstance(): TCPSocket

创建一个TCPSocket对象。

返回值:

类型说明
TCPSocket返回一个TCPSocket对象。

示例:

let tcp = socket.constructTCPSocketInstance();

TCPSocket1+

TCPSocket连接。在调用TCPSocket的方法前,需要先通过socket.constructTCPSocketInstance创建TCPSocket对象。

bind1+

bind(address: NetAddress, callback: AsyncCallback<number>): void

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方式作为异步方法。

参数:

参数名类型必填说明
addressNetAddress目标地址信息。
callbackAsyncCallback<number>成功时回调函数返回socket的句柄fd号。

示例:

let tcp = socket.constructTCPSocketInstance();
tcp.bind(
	{
		address: {
            address: 'xxx.xxx.xxx',
            port: xxxx,
            family: xxx
        }
	}, 
	{
		callback: (err, fd) => {
			if (err) {
				console.log('bind fail.');
				return;
			}
  			console.log('bind success. fd: ' + fd);
  			g_fd = fd;
  		}
  	}
 )

connect1+

connect(
	fd:	number,
	options: TCPConnectOptions,
	callback: AsyncCallback<void>
): void;

连接到指定的IP地址和端口,使用callback方法作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄
optionsTCPConnectOptionsTCPSocket连接的参数,参考TCPConnectOptions。
callbackAsyncCallback<void>回调函数。

示例:

tcp.connect(
    {
        fd: g_fd
    },
    {
        options: {
            address: {
                address: "xxx.xxx.xxx.xxx",
                family: xxx,
                port: xxxx,
            },
            timeout: 5000,
        }
    },
    {
        callback: function (err){
            if (err) {
                console.error('connect fail. err.code: ' + err.code + 'err.data: ' + err.data);
                return;
            }
            console.log('connect succ.');
        }
    },
);

send1+

send(
	fd: number,
	options: TCPSendOptions,
	callback: AsyncCallback<void>
): void;

通过 TCPSocket 连接发送数据,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsTCPSendOptionsTCP发送参数。
callbackAsyncCallback<void>回调函数。

示例:

tcp.send(
    {
		fd: g_fd
	},
	{
		options: {
    			data:"12345", 
    			encoding:"1234"
    		}
    	}
    },
    {
    	callback: function(err) {
            if (err) {
                console.error('send fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('send succ.');
            }
    	}
    }
);

close1+

close(
	fd: number,
	callback: AsyncCallback<void>
): void;

关闭TCPSocket 连接,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<void>回调函数。

示例:

tcp.close(
    {
        fd: g_fd
    },
    {
        callback: function(err) {
            if (err) {
                console.error('close fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
        } else {
                console.log('close succ.');
            }
        }
    }
);

getRemoteAddress1+

getRemoteAddress(
	fd: number,
	callback: AsyncCallback<NetAddress>
): void;

获取对端Socket地址,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<NetAddress>回调函数。

示例:

tcp.getRemoteAddress(
    {
        fd: g_fd
    },
    {
        callback: function(err, remoteAddress) {
            if (err) {
                console.error('getRemoteAddress fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getRemoteAddress succ. address: ' + remoteAddress.address + ', family: ' + remoteAddress.family + ', port: ' + remoteAddress.port);
            }
        }
    }
);

getState1+

getState(
	fd: number,
	callback: AsyncCallback<SocketStateBase>
): void;

获取TCPSocket状态,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

tcp.getState(
    {
        fd: g_fd
    },
    {
        callback: function(err, state) {
            if (err) {
                console.error('getState fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getState fail. state.isBound:' + state.isBound + ', state.isClose: ' + state.isClose + ', state.isConnected: ' + state.isConnected);
            }
        }
    }
);

setExtraOptions1+

setExtraOptions(
	fd: number,
	options: TCPExtraOptions,
	callback: AsyncCallback<void>
): void;

设置TCPSocket连接的其他属性,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsTCPExtraOptionsTCPSocket连接的其他属性。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

tcp.setExtraOptions(
    {
        fd: g_fd
    },
    {
        options: {
            keepAlive:true,
            OOBInline:true,
            TCPNoDelay:true,
            sendBufferSize:1024,
            receiveBufferSize:1024,
            reuseAddress:true,
            socketTimeout:60,
        }
    },
    {
        callback: function(err) {
            if (err) {
                console.error('setExtraOptions fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('setExtraOptions succ.');
            }
        }
    }
);

on('message')1+

on(
	fd: number,
	type: 'message',
	callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

订阅TCPSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

tcp.on(
    {
        fd: g_fd
    },
    {
        type: 'message'
    },
    {
        callback: function(message, remoteInfo) {
            var array = new Uint8Array(message);
            console.log('message data: ' + array);
            console.log('message remoteInfo address: ' + remoteInfo.address + ', family: ' + remoteInfo.family + ', port: ' + remoteInfo.port + ', size: ' + remoteInfo.size);
        }
    }
);

off('message')1+

off(
	fd: number,
	type: 'message',
	callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

取消订阅TCPSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

tcp.off(
    {
        fd: g_fd
    },
    {
        type: 'message'
    }
);

on('connect' | 'close')1+

on(
	fd: number,
	type: 'connect' | 'close',
	callback: Callback<void>
): void;

订阅TCPSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

tcp.on(
    {
		fd: g_fd
	},
	{
		type: 'connect'
	},
    {
    	callback: function() {
    		console.log('connnect callback');
    	}
    }
);
tcp.on(
    {
		fd: g_fd
	},
	{
		type: 'close'
	},
	{
		callback: function() {
			console.log('close callback');
		}
	}
);

off('connect' | 'close')1+

off(
	fd: number,
	type: 'connect' | 'close',
	callback?: Callback<void>
): void;

取消订阅TCPSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅事件类型。 - 'connect':连接事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

tcp.off(
    {
		fd: g_fd
	},
	{
		type: 'connect'
	}
);
tcp.off(
    {
		fd: g_fd
	},
	{
		type: 'close'
	}
);

on('error')1+

on(
    fd: number,
    type: 'error',
    callback: ErrorCallback
): void;

订阅TCPSocket连接的error事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

tcp.on(
    {
		fd: g_fd
    },
	{
		type: 'error'
	},
	{
		callback: function(err) {
			console.log('err code: ' + err);
		}
	}
);

off('error')1+

off(
	fd:number,
	type: 'error',
	callback?: ErrorCallback
): void;

取消订阅TCPSocket连接的error事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

tcp.off(
    {
        fd: g_fd
    },
    {
        type: 'error'
    }
);

TCPConnectOptions1+

TCPSocket连接的参数。

名称类型必填说明
addressNetAddress绑定的地址以及端口。
timeoutnumber超时时间,单位毫秒(ms)。

TCPSendOptions1+

TCPSocket发送请求的参数。

名称类型必填说明
datastring | ArrayBuffer发送的数据。
encodingstring字符编码(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默认为UTF-8。

TCPExtraOptions1+

TCPSocket连接的其他属性。

名称类型必填说明
keepAliveboolean是否保持连接。默认为false。
OOBInlineboolean是否为OOB内联。默认为false。
TCPNoDelaybooleanTCPSocket连接是否无时延。默认为false。
socketLingerObjectsocket是否继续逗留。 - on:是否逗留(true:逗留;false:不逗留)。 - linger:逗留时长,单位毫秒(ms),取值范围为0~65535。 当入参on设置为true时,才需要设置。
receiveBufferSizenumber接收缓冲区大小(单位:Byte)。
sendBufferSizenumber发送缓冲区大小(单位:Byte)。
reuseAddressboolean是否重用地址。默认为false。
socketTimeoutnumber套接字超时时间,单位毫秒(ms)。

 

constructTLSSocketInstance1+

constructTLSSocketInstance(): TLSSocket

创建一个TLSSocket对象。

返回值:

类型说明
TLSSocket返回一个TLSSocket对象。

示例:

let tls = socket.constructTLSSocketInstance();

TLSSocket1+

TLSSocket连接。在调用TLSSocket的方法前,需要先通过socket.constructTLSSocketInstance创建TLSSocket对象。

bind1+

bind(address: NetAddress, callback: AsyncCallback<number>): void

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方式作为异步方法。

参数:

参数名类型必填说明
addressNetAddress目标地址信息。
callbackAsyncCallback<number>成功时回调函数返回socket的句柄fd号。

示例:

let tls = socket.constructTLSSocketInstance();
tls.bind(
	{
		address: {
            address: 'xxx.xxx.xxx',
            port: xxxx,
            family: xxx
        }
	}, 
	{
		callback: (err, fd) => {
			if (err) {
				console.log('bind fail.');
				return;
			}
  			console.log('bind success. fd: ' + fd);
  			g_fd = fd;
  		}
  	}
)

getRemoteAddress1+

getRemoteAddress(
	fd: number,
	callback: AsyncCallback<NetAddress>
): void;

在TLSSocket通信连接成功之后,获取对端Socket地址,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<NetAddress>回调函数。成功返回对端的socket地址,失败返回错误码,错误信息。

示例:

tls.getRemoteAddress(
    {
        fd: g_fd
    },
    {
        callback: function(err, remoteAddress) {
            if (err) {
                console.error('getRemoteAddress fail. err.code: ' + err.code 
                + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getRemoteAddress succ. remote address: ' + remoteAddress.address 
                + ', family: '+ remoteAddress.family + ', port: ' + remoteAddress.port);
            }
        }
    }
);

getState1+

getState(
	fd: number,
	callback: AsyncCallback<SocketStateBase>
): void;

获取TCPSocket状态,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

tls.getState(
    {
        fd: g_fd
    },
    {
        callback: function(err, state) {
            if (err) {
                console.error('getState fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getState fail. state.isBound:' + state.isBound + ', state.isClose: ' + state.isClose + ', state.isConnected: ' + state.isConnected);
            }
        }
    }
);

setExtraOptions1+

setExtraOptions(
	fd: number,
	options: TCPExtraOptions,
	callback: AsyncCallback<void>
): void;

设置TCPSocket连接的其他属性,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsTCPExtraOptionsTCPSocket连接的其他属性。
callbackAsyncCallback<SocketStateBase>回调函数。

示例:

tls.setExtraOptions(
    {
        fd: g_fd
    },
    {
        options: {
            keepAlive:true,
            OOBInline:true,
            TCPNoDelay:true,
            sendBufferSize:1024,
            receiveBufferSize:1024,
            reuseAddress:true,
            socketTimeout:60,
        }
    },
    {
        callback: function(err) {
            if (err) {
                console.error('setExtraOptions fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('setExtraOptions succ.');
            }
        }
    }
);

on('message')1+

on(
	fd: number,
	type: 'message',
	callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

订阅TLSSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

tls.on(
    {
        fd: g_fd
    },
    {
        type: 'message'
    },
    {
        callback: function(message, remoteInfo) {
            var array = new Uint8Array(message);
            console.log('message data: ' + array);
            console.log('message remoteInfo address: ' + remoteInfo.address + ', family: ' + remoteInfo.family + ', port: ' + remoteInfo.port + ', size: ' + remoteInfo.size);
        }
    }
);

off('message')1+

off(
	fd: number,
	type: 'message',
	callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>
): void;

取消订阅TLSSocket连接的接收消息事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'message':接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>回调函数。

示例:

tls.off(
    {
        fd: g_fd
    },
    {
        type: 'message'
    }
);

on('connect' | 'close')1+

on(
	fd: number,
	type: 'connect' | 'close',
	callback: Callback<void>
): void;

订阅TLSSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

tls.on(
    {
		fd: g_fd
	},
	{
		type: 'connect'
	},
    {
    	callback: function() {
    		console.log('connnect callback');
    	}
    }
);
tls.on(
    {
		fd: g_fd
	},
	{
		type: 'close'
	},
	{
		callback: function() {
			console.log('close callback');
		}
	}
);

off('connect' | 'close')1+

off(
	fd: number,
	type: 'connect' | 'close',
	callback?: Callback<void>
): void;

取消订阅TLSSocket连接的数据包消息事件或关闭事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅事件类型。 - 'connect':连接事件。 - 'close':关闭事件。
callbackCallback<void>回调函数。

示例:

tls.off(
    {
		fd: g_fd
	},
	{
		type: 'connect'
	}
);
tls.off(
    {
		fd: g_fd
	},
	{
		type: 'close'
	}
);

on('error')1+

on(
    fd: number,
    type: 'error',
    callback: ErrorCallback
): void;

订阅TLSSocket连接的error事件,使用callback方式作为异步方法。

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

tls.on(
    {
		fd: g_fd
    },
	{
		type: 'error'
	},
	{
		callback: function(err) {
			console.log('err code: ' + err);
		}
	}
);

off('error')1+

off(
	fd:number,
	type: 'error',
	callback?: ErrorCallback
): void;

取消订阅TLSSocket连接的error事件,使用callback方式作为异步方法

参数:

名称类型是否必填说明
fdnumbersocket的句柄。
typestring订阅的事件类型。'error':error事件。
callbackErrorCallback回调函数。

示例:

tls.off(
    {
        fd: g_fd
    },
    {
        type: 'error'
    }
);

getCertificate1+

getCertificate(
	fd:	number,
	callback: AsyncCallback<X509CertRawData>
): void;

在TLSSocket通信连接成功之后,获取本地的数字证书,该接口只适用于双向认证时,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄
callbackAsyncCallback<X509CertRawData>回调函数,成功返回本地的证书,失败返回错误码,错误信息。

示例:

tls.getCertificate(
    {
        fd: g_fd
    },
    {
        callback: function(err, data) {
            if (err) {
                console.error('getCertificate fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getCertificate succ.');
                console.log('data.data ' + data.data + ', data.encodingFormat: ' + data.encodingFormat);
            }
        }
    }
);

getRemoteCertificate1+

getRemoteCertificate(
	fd:	number,
	callback: AsyncCallback<X509CertRawData>
): void;

在TLSSocket通信连接成功之后,获取服务端的数字证书,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄
callbackAsyncCallback<X509CertRawData>回调函数,返回服务端的证书。失败返回错误码,错误信息。

示例:

tls.getRemoteCertificate(
    {
        fd: g_fd
    },
    {
        callback: function(err, data) {
            if (err) {
                console.error(TAG + 'getRemoteCertificate fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log(TAG + 'getRemoteCertificate succ.');
                console.log(TAG + 'data.data ' + data.data + ', data.encodingFormat: ' + data.encodingFormat);
            }
        }
    }
);

getProtocol1+

getProtocol(
	fd:	number,
	callback: AsyncCallback<string>
): void;

在TLSSocket通信连接成功之后,获取通信的协议版本,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄
callbackAsyncCallback<string>回调函数,返回通信的协议。失败返回错误码,错误信息。

示例:

tls.getProtocol(
    {
        fd: g_fd
    },
    {
        callback: function(err, data) {
            if (err) {
                console.error('getProtocol fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getProtocol succ.');
                console.log('protocol: ' + data);
            }
        }
    }
);

getCipherSuite1+

getCipherSuite(
	fd:	number,
	callback: AsyncCallback<Array<string>>
): void;

在TLSSocket通信连接成功之后,获取通信双方协商后的加密套件,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<Array<string>>回调函数,返回通信双方支持的加密套件。 失败返回错误码,错误信息。

示例:

tls.getCipherSuite(
    {
        fd: g_fd
    },
    {
        callback: function(err, data) {
            if (err) {
                console.error('getCipherSuite fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getCipherSuite succ.');
                console.log('data: ' + data.toString());
            }
        }
    }
);

getSignatureAlgorithms1+

getSignatureAlgorithms(
	fd:	number,
	callback: AsyncCallback<Array<string>>
): void;

在TLSSocket通信连接成功之后,获取通信双方协商后签名算法,该接口只适配双向认证模式下,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<Array<string>>回调函数,返回双方支持的签名算法。

示例:

tls.getSignatureAlgorithms(
    {
        fd: g_fd
    },
    {
        callback: function(err, data) {
            if (err) {
                console.error('getSignatureAlgorithms fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('getSignatureAlgorithms succ.');
                console.log('data: ' + data.toString());
            }
        }
    }
);

connect1+

connect(
	fd:	number,
	options: TLSConnectOptions,
	callback: AsyncCallback<void>
): void;

在TLSSocket上bind成功之后,进行通信连接,并创建和初始化TLS会话,实现建立连接过程,启动与服务器的TLS/SSL握手,实现数据传输功能,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
optionsTLSConnectOptionsTLSSocket连接的参数,参考TLSConnectOptions。
callbackAsyncCallback<void>回调函数。

示例:

tls.connect(
    {
        fd: g_fd
    },
    {
        options: {
            address: {
                address: "xxx.xxx.xxx.xxx",
                family: xxx,
                port: xxxx,
            },
            secureOptions: {
                ca: 'xxx',
                cert: "xxx",
                key: "xxx",
                password: "xxx",
                protocols: ['TLSv1.2'],
                signatureAlgorithms: "xxx",
                authMode:1,
                cipherSuite: "TLS-RSA-WITH-AES-128-CBC-SHA|TLS-RSA-WITH-RC4-128-SHA|TLS-RSA-WITH-RC4-128-MD5",
            },
            ALPNProtocols: ["spdy/1", "http/1.1"],
        }
    },
    {
        callback: function (err){
            if (err) {
                console.error('connect fail. err.code: ' + err.code + 'err.data: ' + err.data);
                return;
            }
            console.log('connect succ.');
        }
    },
);

send1+

send(
    fd: number,
    data: string,
    callback: AsyncCallback<void>
): void;

在TLSSocket通信连接成功之后,向服务端发送消息,使用callback方式作为异步方法。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
datastring发送的数据内容。
callbackAsyncCallback<void>回调函数。

示例:

tls.send(
    {
        fd: g_fd
    },
    {
        data:'xxx',
    },
    {
        callback: function(err) {
            if (err) {
                console.error('send fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
            } else {
                console.log('send succ');
            }
        }
    }
);

close1+

close(
	fd: number,
	callback: AsyncCallback<void>
): void;

关闭TLSSocket 连接,使用callback方式作为异步方法 。

参数:

参数名类型必填说明
fdnumbersocket的句柄。
callbackAsyncCallback<void>回调函数。

示例:

tls.close(
    {
        fd: g_fd
    },
    {
        callback: function(err) {
            if (err) {
                console.error('close fail. err.code: ' + err.code + ', err.data: ' + err.data);
                return ;
        } else {
                console.log('close succ.');
            }
        }
    }
);

TLSConnectOptions1+

TLS连接的操作参数。

名称类型必填说明
addressNetAddress连接的地址以及端口。
secureOptionsTLSSecureOptionsTLS安全相关操作。
ALPNProtocolsArray<string>ALPN协议。

TLSSecureOptions1+

TLS安全相关操作,其中ca证书为必选参数,其他参数为可选参数。当本地证书cert和私钥key不为空时,开启双向验证模式。cert和key其中一项为空时,开启单向验证模式。

名称类型必填说明
castring | Array<string>服务端的ca证书,用于认证校验服务端的数字证书。
certstring本地客户端的数字证书。
keystring本地数字证书的私钥。
passwordstring读取私钥的密码。
protocolsProtocol|Array<Protocol>TLS的协议版本。
useRemoteCipherPreferboolean优先使用对等方的密码套件。
signatureAlgorithmsstring通信过程中的签名算法。
cipherSuitestring通信过程中的加密套件。

X509CertRawData1+

枚举,TLS通信的协议版本。

名称说明
SSLv3"SSLv3.0"使用SSL v3.0协议。
TLSv1"TLSv1.0"使用TLS v1.0协议。
TLSv11"TLSv1.1"使用TLS v1.1协议。
TLSv12"TLSv1.2"使用TLS v1.2协议。
TLSv13"TLSv1.3"使用TLS v1.3协议。

X509CertRawData1+

存储证书的数据。

名称类型必填说明
dataUint8Array数据。
encodingFormatEncodingFormat数据编码格式。

EncodingFormat1+

枚举,证书编码格式。

名称说明
FORMAT_DER0证书是DER格式。
FORMAT_PEM1证书是PEM格式。
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐