# @ohos.net.webSocket (WebSocket Connection)
NOTE
The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
You can use WebSocket to establish a bidirectional connection between a server and a client. Before doing this, you need to use the createWebSocket API to create a WebSocket object and then use the connect API to connect to the server. If the connection is successful, the client will receive a callback of the open event. Then, the client can communicate with the server using the send API. When the server sends a message to the client, the client will receive a callback of the message event. If the client no longer needs this connection, it can call the close API to disconnect from the server. Then, the client will receive a callback of the close event.
If an error occurs in any of the preceding processes, the client will receive a callback of the error event.
Modules to Import
import webSocket from '@ohos.net.webSocket';
Examples
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let defaultIpAddress = "ws://";
let ws = webSocket.createWebSocket();
ws.on('open', (err:BusinessError, value: Object) => {
if (err != undefined) {
console.log(JSON.stringify(err));
return;
}
// When receiving the on('open') event, the client can use the send() API to communicate with the server.
ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.log("send success");
} else {
console.log("send fail, err:" + JSON.stringify(err));
}
});
});
ws.on('message', (err: BusinessError, value: string) => {
console.log("on message, message:" + value);
// When receiving the `bye` message (the actual message name may differ) from the server, the client proactively disconnects from the server.
if (value === 'bye') {
ws.close((err: BusinessError, value: boolean) => {
if (!err) {
console.log("close success");
} else {
console.log("close fail, err is " + JSON.stringify(err));
}
});
}
});
ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
console.log("on close, code is " + value.code + ", reason is " + value.reason);
});
ws.on('error', (err: BusinessError) => {
console.log("on error, error:" + JSON.stringify(err));
});
ws.connect(defaultIpAddress, (err: BusinessError, value: boolean) => {
if (!err) {
console.log("connect success");
} else {
console.log("connect fail, err:" + JSON.stringify(err));
}
ws.close((err: BusinessError) => {
if (!err) {
console.log("close success");
} else {
console.log("close fail, err is " + JSON.stringify(err));
}
});
});
webSocket.createWebSocket6+
createWebSocket(): WebSocket
Creates a WebSocket connection. You can use this API to create or close a WebSocket connection, send data over it, or enable or disable listening for the open, close, message, and error events.
System capability: SystemCapability.Communication.NetStack
Return value
Type | Description |
---|---|
WebSocket | A WebSocket object, which contains the connect, send, close, on, or off method. |
Example
let ws: webSocket = webSocket.createWebSocket();
WebSocket6+
Defines a WebSocket object. Before invoking WebSocket APIs, you need to call webSocket.createWebSocket to create a WebSocket object.
connect6+
connect(url: string, callback: AsyncCallback<boolean>): void
Initiates a WebSocket request to establish a WebSocket connection to a given URL. This API uses an asynchronous callback to return the result.
NOTE You can listen to error events to obtain the operation result. If an error occurs, the error code 200 will be returned.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
url | string | Yes | URL for establishing a WebSocket connection. |
callback | AsyncCallback<boolean> | Yes | Callback used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
let url = "ws://";
ws.connect(url, (err: BusinessError, value: boolean) => {
if (!err) {
console.log("connect success");
} else {
console.log("connect fail, err:" + JSON.stringify(err));
}
});
connect6+
connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback<boolean>): void
Initiates a WebSocket request carrying specified options to establish a WebSocket connection to a given URL. This API uses an asynchronous callback to return the result.
NOTE You can listen to error events to obtain the operation result. If an error occurs, the error code 200 will be returned.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
url | string | Yes | URL for establishing a WebSocket connection. |
options | WebSocketRequestOptions | Yes | Request options. For details, see WebSocketRequestOptions. |
callback | AsyncCallback<boolean> | Yes | Callback used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
let header: Map<string, string>
header.set("key", "value")
header.set("key2", "value2")
let url = "ws://"
ws.connect(url, header as webSocket.WebSocketRequestOptions, (err: BusinessError, value: Object) => {
if (!err) {
console.log("connect success");
} else {
console.log("connect fail, err:" + JSON.stringify(err))
}
});
connect6+
connect(url: string, options?: WebSocketRequestOptions): Promise<boolean>
Initiates a WebSocket request carrying specified options to establish a WebSocket connection to a given URL. This API uses a promise to return the result.
NOTE You can listen to error events to obtain the operation result. If an error occurs, the error code 200 will be returned.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
url | string | Yes | URL for establishing a WebSocket connection. |
options | WebSocketRequestOptions | No | Request options. For details, see WebSocketRequestOptions. |
Return value
Type | Description |
---|---|
Promise<boolean> | Promise used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.connect(url);
promise.then((value: boolean) => {
console.log("connect success")
}).catch((err:string) => {
console.log("connect fail, error:" + JSON.stringify(err))
});
send6+
send(data: string | ArrayBuffer, callback: AsyncCallback<boolean>): void
Sends data through a WebSocket connection. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
data | string | ArrayBuffer | Yes | Data to send. Only the string type is supported for API version 6 or earlier. Both the string and ArrayBuffer types are supported for API version 8 or later. |
callback | AsyncCallback<boolean> | Yes | Callback used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err: BusinessError, value: boolean) => {
ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.log("send success");
} else {
console.log("send fail, err:" + JSON.stringify(err))
}
});
});
send6+
send(data: string | ArrayBuffer): Promise<boolean>
Sends data through a WebSocket connection. This API uses a promise to return the result.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
data | string | ArrayBuffer | Yes | Data to send. Only the string type is supported for API version 6 or earlier. Both the string and ArrayBuffer types are supported for API version 8 or later. |
Return value
Type | Description |
---|---|
Promise<boolean> | Promise used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err: BusinessError, value: boolean) => {
let promise = ws.send("Hello, server!");
promise.then((value: boolean) => {
console.log("send success")
}).catch((err:string) => {
console.log("send fail, error:" + JSON.stringify(err))
});
});
close6+
close(callback: AsyncCallback<boolean>): void
Closes a WebSocket connection. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
callback | AsyncCallback<boolean> | Yes | Callback used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
ws.close((err: BusinessError) => {
if (!err) {
console.log("close success")
} else {
console.log("close fail, err is " + JSON.stringify(err))
}
});
close6+
close(options: WebSocketCloseOptions, callback: AsyncCallback<boolean>): void
Closes a WebSocket connection carrying specified options such as code and reason. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
options | WebSocketCloseOptions | Yes | Request options. For details, see WebSocketCloseOptions. |
callback | AsyncCallback<boolean> | Yes | Callback used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
let options: webSocket.WebSocketCloseOptions
options.code = 1000
options.reason = "your reason"
ws.close(options, (err: BusinessError) => {
if (!err) {
console.log("close success")
} else {
console.log("close fail, err is " + JSON.stringify(err))
}
});
close6+
close(options?: WebSocketCloseOptions): Promise<boolean>
Closes a WebSocket connection carrying specified options such as code and reason. This API uses a promise to return the result.
Required permissions: ohos.permission.INTERNET
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
options | WebSocketCloseOptions | No | Request options. For details, see WebSocketCloseOptions. |
Return value
Type | Description |
---|---|
Promise<boolean> | Promise used to return the result. |
Error codes
ID | Error Message |
---|---|
401 | Parameter error. |
201 | Permission denied. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
let options: webSocket.WebSocketCloseOptions
options.code = 1000
options.reason = "your reason"
let promise = ws.close();
promise.then((value: boolean) => {
console.log("close success")
}).catch((err:string) => {
console.log("close fail, err is " + JSON.stringify(err))
});
on('open')6+
on(type: 'open', callback: AsyncCallback<Object>): void
Enables listening for the open events of a WebSocket connection. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. open: event indicating that a WebSocket connection has been opened. |
callback | AsyncCallback<Object> | Yes | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError, Callback } from '@ohos.base';
let ws= webSocket.createWebSocket();
class OutValue {
status: number = 0
message: string = ""
}
ws.on('open', (err: BusinessError, value: OutValue) => {
console.log("on open, status:" + value.status + ", message:" + value.message);
});
off('open')6+
off(type: 'open', callback?: AsyncCallback<Object>): void
Disables listening for the open events of a WebSocket connection. This API uses an asynchronous callback to return the result.
NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. open: event indicating that a WebSocket connection has been opened. |
callback | AsyncCallback<Object> | No | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
class OutValue {
status: number = 0
message: string = ""
}
let callback1 = (err: BusinessError, value: OutValue) => {
console.log("on open, status:" + value.status + ", message:" + value.message);
}
ws.on('open', callback1);
// You can pass the callback of the on function to cancel listening for a certain type of callback. If you do not pass the callback, you will cancel listening for all callbacks.
ws.off('open', callback1);
on('message')6+
on(type: 'message', callback: AsyncCallback<string | ArrayBuffer>): void
Enables listening for the message events of a WebSocket connection. This API uses an asynchronous callback to return the result. The maximum length of each message is 4 KB. If the length exceeds 4 KB, the message is automatically fragmented.
NOTE The data in AsyncCallback can be in the format of string (API version 6) or ArrayBuffer (API version 8).
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. message: event indicating that a message has been received from the server. |
callback | AsyncCallback<string | ArrayBuffer 8+> | Yes | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
ws.on('message', (err: BusinessError, value: string) => {
console.log("on message, message:" + value);
});
off('message')6+
off(type: 'message', callback?: AsyncCallback<string | ArrayBuffer>): void
Disables listening for the message events of a WebSocket connection. This API uses an asynchronous callback to return the result. The maximum length of each message is 4 KB. If the length exceeds 4 KB, the message is automatically fragmented.
NOTE The data in AsyncCallback can be in the format of string (API version 6) or ArrayBuffer (API version 8). You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. message: event indicating that a message has been received from the server. |
callback | AsyncCallback<string |ArrayBuffer 8+> | No | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
ws.off('message');
on('close')6+
on(type: 'close', callback: AsyncCallback<CloseResult>): void
Enables listening for the close events of a WebSocket connection. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. close: event indicating that a WebSocket connection has been closed. |
callback | AsyncCallback<CloseResult> | Yes | Callback used to return the result. close indicates the close error code and reason indicates the error code description. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
console.log("on close, code is " + value.code + ", reason is " + value.reason);
});
off('close')6+
off(type: 'close', callback?: AsyncCallback<CloseResult>): void
Disables listening for the close events of a WebSocket connection. This API uses an asynchronous callback to return the result.
NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. close: event indicating that a WebSocket connection has been closed. |
callback | AsyncCallback<CloseResult> | No | Callback used to return the result. close indicates the close error code and reason indicates the error code description. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
ws.off('close');
on('error')6+
on(type: 'error', callback: ErrorCallback): void
Enables listening for the error events of a WebSocket connection. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. error: event indicating the WebSocket connection has encountered an error. |
callback | ErrorCallback | Yes | Callback used to return the result. Common error code: 200 |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
ws.on('error', (err: BusinessError) => {
console.log("on error, error:" + JSON.stringify(err))
});
off('error')6+
off(type: 'error', callback?: ErrorCallback): void
Disables listening for the error events of a WebSocket connection. This API uses an asynchronous callback to return the result.
NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. error: event indicating the WebSocket connection has encountered an error. |
callback | ErrorCallback | No | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
ws.off('error');
on('dataEnd')11+
on(type: 'dataEnd', callback: Callback<void>): void
Enables listening for the dataEnd events of a WebSocket connection. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. dataEnd: event indicating the data receiving over the WebSocket connection has ended. |
callback | Callback<void> | Yes | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
let ws = webSocket.createWebSocket();
ws.on('dataEnd', (err: BusinessError) => {
console.log("on dataEnd, error:" + JSON.stringify(err))
});
off('dataEnd')11+
off(type: 'dataEnd', callback?: Callback<void>): void
Disables listening for the dataEnd events of a WebSocket connection. This API uses an asynchronous callback to return the result.
NOTE You can pass the callback of the on function if you want to cancel listening for a certain type of event. If you do not pass the callback, you will cancel listening for all events.
System capability: SystemCapability.Communication.NetStack
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. dataEnd: event indicating the data receiving over the WebSocket connection has ended. |
callback | Callback<void> | No | Callback used to return the result. |
Example
import webSocket from '@ohos.net.webSocket';
let ws = webSocket.createWebSocket();
ws.off('dataEnd');
WebSocketRequestOptions
Defines the optional parameters carried in the request for establishing a WebSocket connection.
System capability: SystemCapability.Communication.NetStack
Name | Type | Mandatory | Description |
---|---|---|---|
header | Object | No | Header carrying optional parameters in the request for establishing a WebSocket connection. You can customize the parameter or leave it unspecified. |
WebSocketCloseOptions
Defines the optional parameters carried in the request for closing a WebSocket connection.
System capability: SystemCapability.Communication.NetStack
Name | Type | Mandatory | Description |
---|---|---|---|
code | number | No | Error code. Set this parameter based on the actual situation. The default value is 1000. |
reason | string | No | Error cause. Set this parameter based on the actual situation. The default value is an empty string (""). |
CloseResult10+
Represents the result obtained from the close event reported when the WebSocket connection is closed.
System capability: SystemCapability.Communication.NetStack
Name | Type | Mandatory | Description |
---|---|---|---|
code | number | Yes | Error code for closing the connection. |
reason | string | Yes | Error cause for closing the connection. |
Result Codes for Closing a WebSocket Connection
You can customize the result codes sent to the server. The result codes in the following table are for reference only.
System capability: SystemCapability.Communication.NetStack
Value | Description |
---|---|
1000 | Normally closed. |
1001 | Connection closed by the server. |
1002 | Incorrect protocol. |
1003 | Data unable to be processed. |
1004~1015 | Reserved. |