W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
使用WebSocket建立服務器與客戶端的雙向連接,需要先通過createWebSocket方法創(chuàng)建WebSocket對象,然后通過connect方法連接到服務器。當連接成功后,客戶端會收到open事件的回調,之后客戶端就可以通過send方法與服務器進行通信。當服務器發(fā)信息給客戶端時,客戶端會收到message事件的回調。當客戶端不要此連接時,可以通過調用close方法主動斷開連接,之后客戶端會收到close事件的回調。
若在上述任一過程中發(fā)生錯誤,客戶端會收到error事件的回調。
- import webSocket from '@ohos.net.webSocket';
- var defaultIpAddress = "ws://";
- let ws = webSocket.createWebSocket();
- ws.on('open', (err, value) => {
- console.log("on open, status:" + value['status'] + ", message:" + value['message']);
- // 當收到on('open')事件時,可以通過send()方法與服務器進行通信
- ws.send("Hello, server!", (err, value) => {
- if (!err) {
- console.log("send success");
- } else {
- console.log("send fail, err:" + JSON.stringify(err));
- }
- });
- });
- ws.on('message', (err, value) => {
- console.log("on message, message:" + value);
- // 當收到服務器的`bye`消息時(此消息字段僅為示意,具體字段需要與服務器協(xié)商),主動斷開連接
- if (value === 'bye') {
- ws.close((err, value) => {
- if (!err) {
- console.log("close success");
- } else {
- console.log("close fail, err is " + JSON.stringify(err));
- }
- });
- }
- });
- ws.on('close', (err, value) => {
- console.log("on close, code is " + value.code + ", reason is " + value.reason);
- });
- ws.on('error', (err) => {
- console.log("on error, error:" + JSON.stringify(err));
- });
- ws.connect(defaultIpAddress, (err, value) => {
- if (!err) {
- console.log("connect success");
- } else {
- console.log("connect fail, err:" + JSON.stringify(err));
- }
- });
createWebSocket(): WebSocket
創(chuàng)建一個WebSocket,里面包括建立連接、關閉連接、發(fā)送數(shù)據(jù)和訂閱/取消訂閱WebSocket連接的打開事件、接收到服務器消息事件、關閉事件和錯誤事件。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
WebSocket | 返回一個WebSocket對象,里面包括connect、send、close、on和off方法。 |
示例:
- let ws = webSocket.createWebSocket();
connect(url: string, callback: AsyncCallback<boolean>): void
根據(jù)URL地址,建立一個WebSocket連接,使用callback方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 建立WebSocket連接的URL地址。 |
callback | AsyncCallback<boolean> | 是 | 回調函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.connect(url, (err, value) => {
- if (!err) {
- console.log("connect success");
- } else {
- console.log("connect fail, err:" + JSON.stringify(err))
- }
- });
connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback<boolean>): void
根據(jù)URL地址和header,建立一個WebSocket連接,使用callback方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 建立WebSocket連接的URL地址。 |
options | WebSocketRequestOptions | 是 | 參考WebSocketRequestOptions。 |
callback | AsyncCallback<boolean> | 是 | 回調函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.connect(url, {
- header: {
- "key": "value",
- "key2": "value2"
- }
- }, (err, value) => {
- if (!err) {
- console.log("connect success");
- } else {
- console.log("connect fail, err:" + JSON.stringify(err))
- }
- });
connect(url: string, options?: WebSocketRequestOptions): Promise<boolean>
根據(jù)URL地址和header,建立一個WebSocket連接,使用Promise方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
url | string | 是 | 建立WebSocket連接的URL地址。 |
options | WebSocketRequestOptions | 否 | 參考WebSocketRequestOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | 以Promise形式返回建立連接的結果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- let promise = ws.connect(url);
- promise.then((value) => {
- console.log("connect success")
- }).catch((err) => {
- console.log("connect fail, error:" + JSON.stringify(err))
- });
send(data: string | ArrayBuffer, callback: AsyncCallback<boolean>): void
通過WebSocket連接發(fā)送數(shù)據(jù),使用callback方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | ArrayBuffer | 是 | 發(fā)送的數(shù)據(jù)。 API 6及更早版本僅支持string類型。API 8起同時支持string和ArrayBuffer類型。 |
callback | AsyncCallback<boolean> | 是 | 回調函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.connect(url, (err, value) => {
- ws.send("Hello, server!", (err, value) => {
- if (!err) {
- console.log("send success");
- } else {
- console.log("send fail, err:" + JSON.stringify(err))
- }
- });
- });
send(data: string | ArrayBuffer): Promise<boolean>
通過WebSocket連接發(fā)送數(shù)據(jù),使用Promise方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | ArrayBuffer | 是 | 發(fā)送的數(shù)據(jù)。 API 6及更早版本僅支持string類型。API 8起同時支持string和ArrayBuffer類型。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | 以Promise形式返回發(fā)送數(shù)據(jù)的結果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.connect(url, (err, value) => {
- let promise = ws.send("Hello, server!");
- promise.then((value) => {
- console.log("send success")
- }).catch((err) => {
- console.log("send fail, error:" + JSON.stringify(err))
- });
- });
close(callback: AsyncCallback<boolean>): void
關閉WebSocket連接,使用callback方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<boolean> | 是 | 回調函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.close((err, value) => {
- if (!err) {
- console.log("close success")
- } else {
- console.log("close fail, err is " + JSON.stringify(err))
- }
- });
close(options: WebSocketCloseOptions, callback: AsyncCallback<boolean>): void
根據(jù)可選參數(shù)code和reason,關閉WebSocket連接,使用callback方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
options | WebSocketCloseOptions | 是 | 參考WebSocketCloseOptions。 |
callback | AsyncCallback<boolean> | 是 | 回調函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- ws.close({
- code: 1000,
- reason: "your reason"
- }, (err, value) => {
- if (!err) {
- console.log("close success")
- } else {
- console.log("close fail, err is " + JSON.stringify(err))
- }
- });
close(options?: WebSocketCloseOptions): Promise<boolean>
根據(jù)可選參數(shù)code和reason,關閉WebSocket連接,使用Promise方式作為異步方法。
需要權限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
options | WebSocketCloseOptions | 否 | 參考WebSocketCloseOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | 以Promise形式返回關閉連接的結果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- let ws = webSocket.createWebSocket();
- let url = "ws://"
- let promise = ws.close({
- code: 1000,
- reason: "your reason"
- });
- promise.then((value) => {
- console.log("close success")
- }).catch((err) => {
- console.log("close fail, err is " + JSON.stringify(err))
- });
on(type: 'open', callback: AsyncCallback<Object>): void
訂閱WebSocket的打開事件,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'open':WebSocket的打開事件。 |
callback | AsyncCallback<Object> | 是 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- ws.on('open', (err, value) => {
- console.log("on open, status:" + value['status'] + ", message:" + value['message']);
- });
off(type: 'open', callback?: AsyncCallback<Object>): void
取消訂閱WebSocket的打開事件,使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'open':WebSocket的打開事件。 |
callback | AsyncCallback<Object> | 否 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- let callback1 = (err, value) => {
- console.log("on open, status:" + value['status'] + ", message:" + value['message']);
- }
- ws.on('open', callback1);
- // 可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱
- ws.off('open', callback1);
on(type: 'message', callback: AsyncCallback<string | ArrayBuffer>): void
訂閱WebSocket的接收到服務器消息事件,使用callback方式作為異步方法。每個消息最大長度為4K,超過4K自動分片。
AsyncCallback中的數(shù)據(jù)可以是字符串(API 6)或ArrayBuffer(API 8)。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'message':WebSocket的接收到服務器消息事件。 |
callback | AsyncCallback<string | ArrayBuffer 8+> | 是 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- ws.on('message', (err, value) => {
- console.log("on message, message:" + value);
- });
off(type: 'message', callback?: AsyncCallback<string | ArrayBuffer>): void
取消訂閱WebSocket的接收到服務器消息事件,使用callback方式作為異步方法。每個消息最大長度為4K,超過4K自動分片。
AsyncCallback中的數(shù)據(jù)可以是字符串(API 6)或ArrayBuffer(API 8)。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'message':WebSocket的接收到服務器消息事件。 |
callback | AsyncCallback<string |ArrayBuffer 8+> | 否 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- ws.off('message');
on(type: 'close', callback: AsyncCallback<{ code: number, reason: string }>): void
訂閱WebSocket的關閉事件,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'close':WebSocket的關閉事件。 |
callback | AsyncCallback<{ code: number, reason: string }> | 是 | 回調函數(shù)。 close:close錯誤碼,reason:錯誤碼說明 |
示例:
- let ws = webSocket.createWebSocket();
- ws.on('close', (err, value) => {
- console.log("on close, code is " + value.code + ", reason is " + value.reason);
- });
off(type: 'close', callback?: AsyncCallback<{ code: number, reason: string }>): void
取消訂閱WebSocket的關閉事件,使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'close':WebSocket的關閉事件。 |
callback | AsyncCallback<{ code: number, reason: string }> | 否 | 回調函數(shù)。 close:close錯誤碼,reason:錯誤碼說明 |
示例:
- let ws = webSocket.createWebSocket();
- ws.off('close');
on(type: 'error', callback: ErrorCallback): void
訂閱WebSocket的Error事件,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'error':WebSocket的Error事件。 |
callback | ErrorCallback | 是 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- ws.on('error', (err) => {
- console.log("on error, error:" + JSON.stringify(err))
- });
off(type: 'error', callback?: ErrorCallback): void
取消訂閱WebSocket的Error事件,使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 'error':WebSocket的Error事件。 |
callback | ErrorCallback | 否 | 回調函數(shù)。 |
示例:
- let ws = webSocket.createWebSocket();
- ws.off('error');
建立WebSocket連接時,可選參數(shù)的類型和說明。
系統(tǒng)能力:以下各項對應的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
header | Object | 否 | 建立WebSocket連接可選參數(shù),代表建立連接時攜帶的HTTP頭信息。參數(shù)內容自定義,也可以不指定。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: