91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發(fā)網絡管理:ohos.net.webSocket WebSocket連接

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-19 17:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

WebSocket連接

說明: 本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

使用WebSocket建立服務器與客戶端的雙向連接,需要先通過[createWebSocket]方法創(chuàng)建[WebSocket]對象,然后通過[connect]方法連接到服務器。當連接成功后,客戶端會收到[open]事件的回調,之后客戶端就可以通過[send]方法與服務器進行通信。當服務器發(fā)信息給客戶端時,客戶端會收到[message]事件的回調。當客戶端不要此連接時,可以通過調用[close]方法主動斷開連接,之后客戶端會收到[close]事件的回調。

若在上述任一過程中發(fā)生錯誤,客戶端會收到[error]事件的回調。

導入模塊

import webSocket from '@ohos.net.webSocket';

完整示例

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`消息時(此消息字段僅為示意,具體字段需要與服務器協商),主動斷開連接
    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));
    }
});

webSocket.createWebSocket

createWebSocket(): WebSocket

創(chuàng)建一個WebSocket,里面包括建立連接、關閉連接、發(fā)送數據和訂閱/取消訂閱WebSocket連接的打開事件、接收到服務器消息事件、關閉事件和錯誤事件。

系統能力 :SystemCapability.Communication.NetStack

返回值:

類型說明
[WebSocket]返回一個WebSocket對象,里面包括connect、send、close、on和off方法。

示例:

let ws = webSocket.createWebSocket();

WebSocket

在調用WebSocket的方法前,需要先通過[webSocket.createWebSocket]創(chuàng)建一個WebSocket。

connect

connect(url: string, callback: AsyncCallback): void

根據URL地址,建立一個WebSocket連接,使用callback方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
urlstring建立WebSocket連接的URL地址。
callbackAsyncCallback回調函數。

示例:

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

connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback): void

根據URL地址和header,建立一個WebSocket連接,使用callback方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
urlstring建立WebSocket連接的URL地址。
optionsWebSocketRequestOptions參考[WebSocketRequestOptions]。
callbackAsyncCallback回調函數。

示例:

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

connect(url: string, options?: WebSocketRequestOptions): Promise

根據URL地址和header,建立一個WebSocket連接,使用Promise方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
urlstring建立WebSocket連接的URL地址。
optionsWebSocketRequestOptions參考[WebSocketRequestOptions]。

返回值:

類型說明
Promise以Promise形式返回建立連接的結果。

示例:

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

send(data: string | ArrayBuffer, callback: AsyncCallback): void

通過WebSocket連接發(fā)送數據,使用callback方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
datastringArrayBuffer 8+
callbackAsyncCallback回調函數。

示例:

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

send(data: string | ArrayBuffer): Promise

通過WebSocket連接發(fā)送數據,使用Promise方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
datastringArrayBuffer 8+

返回值:

類型說明
Promise以Promise形式返回發(fā)送數據的結果。

示例:

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

close(callback: AsyncCallback): void

關閉WebSocket連接,使用callback方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
callbackAsyncCallback回調函數。

示例:

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

close(options: WebSocketCloseOptions, callback: AsyncCallback): void

根據可選參數code和reason,關閉WebSocket連接,使用callback方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
optionsWebSocketCloseOptions參考[WebSocketCloseOptions]。
callbackAsyncCallback回調函數。

示例:

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

close(options?: WebSocketCloseOptions): Promise

根據可選參數code和reason,關閉WebSocket連接,使用Promise方式作為異步方法。

需要權限 :ohos.permission.INTERNET

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
optionsWebSocketCloseOptions參考[WebSocketCloseOptions]。

返回值:

類型說明
Promise以Promise形式返回關閉連接的結果。

示例:

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('open')

on(type: 'open', callback: AsyncCallback ): void

訂閱WebSocket的打開事件,使用callback方式作為異步方法。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'open':WebSocket的打開事件。
callbackAsyncCallback回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.on('open', (err, value) = > {
	console.log("on open, status:" + value['status'] + ", message:" + value['message']);
});

off('open')

off(type: 'open', callback?: AsyncCallback ): void

取消訂閱WebSocket的打開事件,使用callback方式作為異步方法。

說明: 可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'open':WebSocket的打開事件。
callbackAsyncCallback回調函數。

示例:

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('message')

on(type: 'message', callback: AsyncCallback): void

訂閱WebSocket的接收到服務器消息事件,使用callback方式作為異步方法。

說明: AsyncCallback中的數據可以是字符串(API 6)或ArrayBuffer(API 8)。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'message':WebSocket的接收到服務器消息事件。
callbackAsyncCallback回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.on('message', (err, value) = > {
	console.log("on message, message:" + value);
});

off('message')

off(type: 'message', callback?: AsyncCallback): void

取消訂閱WebSocket的接收到服務器消息事件,使用callback方式作為異步方法。

說明: AsyncCallback中的數據可以是字符串(API 6)或ArrayBuffer(API 8)。 可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'message':WebSocket的接收到服務器消息事件。
callbackAsyncCallback回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.off('message');

on('close')

on(type: 'close', callback: AsyncCallback<{ code: number, reason: string }>): void

訂閱WebSocket的關閉事件,使用callback方式作為異步方法。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'close':WebSocket的關閉事件。
callbackAsyncCallback<{ code: number, reason: string }>回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.on('close', (err, value) = > {
	console.log("on close, code is " + value.code + ", reason is " + value.reason);
});

off('close')

off(type: 'close', callback?: AsyncCallback<{ code: number, reason: string }>): void

取消訂閱WebSocket的關閉事件,使用callback方式作為異步方法。

說明: 可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'close':WebSocket的關閉事件。
callbackAsyncCallback<{ code: number, reason: string }>回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.off('close');

on('error')

on(type: 'error', callback: ErrorCallback): void

訂閱WebSocket的Error事件,使用callback方式作為異步方法。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'error':WebSocket的Error事件。
callbackErrorCallback回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.on('error', (err) = > {
	console.log("on error, error:" + JSON.stringify(err))
});

off('error')

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

取消訂閱WebSocket的Error事件,使用callback方式作為異步方法。

說明: 可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。

系統能力 :SystemCapability.Communication.NetStack

參數:

參數名類型必填說明
typestring'error':WebSocket的Error事件。
callbackErrorCallback回調函數。

示例:

let ws = webSocket.createWebSocket();
ws.off('error');

WebSocketRequestOptions

建立WebSocket連接時,可選參數的類型和說明。

系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetStack。

參數名類型必填說明
headerObject建立WebSocket連接可選參數,代表建立連接時攜帶的HTTP頭信息。參數內容自定義,也可以不指定。

WebSocketCloseOptions

關閉WebSocket連接時,可選參數的類型和說明。

系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetStack。

參數名類型必填說明
codenumber錯誤碼,關閉WebSocket連接時的可選參數,可根據實際情況來填。默認值為1000。
reasonstring原因值,關閉WebSocket連接時的可選參數,可根據實際情況來填。默認值為空字符串("")。

close錯誤碼說明

發(fā)送給服務端的錯誤碼可以自行定義,下面的列表僅供參考。

系統能力 :以下各項對應的系統能力均為SystemCapability.Communication.NetStack。

說明
1000正常關閉
1001服務器主動關閉
1002協議錯誤
1003無法處理的數據類型
1004~1015保留值

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    9520

    瀏覽量

    157022
  • 網絡管理
    +關注

    關注

    0

    文章

    127

    瀏覽量

    29348
  • WebSocket
    +關注

    關注

    0

    文章

    33

    瀏覽量

    4456
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45889
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從0到1搭建實時日志監(jiān)控系統:基于WebSocket + Elasticsearch的實戰(zhàn)方案

    :單WebSocket連接支持500條/秒日志推送 成本 :3節(jié)點ES集群(4C16G)可支撐日志量100GB/天 6. 擴展思考 如何結合Prometheus實現 告警閾值動態(tài)配置 ? 針對海量日志場景,是否需要引入 Kafka作為消息隊列 ?
    發(fā)表于 01-09 16:43

    米爾OCPP協議實戰(zhàn)開發(fā)指南,賦能歐標充電樁市場

    Charge Point Protocol即開放充電點協議)作為連接充電樁與中央管理系統的\"通用語言\",正成為解決設備互聯互通難題的關鍵技術。一、OCPP:為何是出海歐標的必選
    發(fā)表于 12-11 16:13

    常用Web 實時通信技術:原理+選型,一篇通關

    用的實時通信技術,從概念、原理特點、適用場景、對比選型進行詳細解析。 一、WebSocket 1.1、核心概念 WebSocket 是 Web 端實時通信的 “基礎設施”,通過 全雙工長連接 和 輕量幀傳輸 ,解決了 HTTP
    的頭像 發(fā)表于 10-27 17:19 ?831次閱讀
    常用Web 實時通信技術:原理+選型,一篇通關

    一文吃透WebSocket:智能物聯網通信的入門與實戰(zhàn)全攻略!

    想在智能物聯網項目中實現設備與平臺的實時“對話”?WebSocket是你的最佳選擇。本文作為一份完整的學習與實戰(zhàn)攻略,從基礎概念講起,逐步深入到編碼實踐,涵蓋協議細節(jié)、開發(fā)框架與常見問題
    的頭像 發(fā)表于 10-15 18:16 ?481次閱讀
    一文吃透<b class='flag-5'>WebSocket</b>:智能物聯網通信的入門與實戰(zhàn)全攻略!

    智能物聯網實時通信實戰(zhàn):WebSocket技術解析 !

    在設備海量接入、數據高頻交互的物聯網時代,WebSocket以其低延遲、雙向通信的優(yōu)勢脫穎而出。本文全面解析其在智能物聯網中的技術實現路徑,涵蓋協議分析、服務端/客戶端開發(fā)、心跳?;钆c錯誤處理,并
    的頭像 發(fā)表于 10-15 18:16 ?1039次閱讀
    智能物聯網實時通信實戰(zhàn):<b class='flag-5'>WebSocket</b>技術解析 !

    【匯思博SEEK100開發(fā)板試用體驗】在開發(fā)鴻蒙OS搭建QT開發(fā)環(huán)境

    進行連接。具體來說,Qt 應用的界面會被渲染在一個 XComponent 組件上,該組件由平臺插件創(chuàng)建和管理。在底層,事件處理、窗口管理等操作都由這個插件完成轉換,從而保證 Qt 應用能在
    發(fā)表于 08-24 18:34

    在遇到基站斷電或其他傳輸中斷,基站或上游網元傳輸恢復后,IR615偶發(fā)網絡連接建立失敗怎么解決?

    設備SIM采用的是中國移動物聯網通用流量卡,APN填寫的是CMIOT,設備有開啟ICMP探測,會偶發(fā)網絡連接失敗情況,當基站故障或其他網絡調整后,設備并沒有發(fā)起重新撥號連接
    發(fā)表于 08-06 07:24

    【HarmonyOS 5】金融應用開發(fā)鴻蒙組件實踐

    【HarmonyOS 5】金融應用開發(fā)鴻蒙組件實踐 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財#
    的頭像 發(fā)表于 07-11 18:20 ?959次閱讀
    【HarmonyOS 5】金融應用<b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b>組件實踐

    鴻蒙地圖功能開發(fā)【1. 開發(fā)準備】##地圖開發(fā)##

    ? 對于地圖功能的開發(fā),有以下三種思路 使用鴻蒙官方的Map Kit進行開發(fā) 使用第三方地圖的SDK(例如高德地圖、百度地圖) 做一個基于h5的地圖頁面,通過Web組件去引入 對于這三種方案,每一種
    發(fā)表于 06-29 22:52

    鴻蒙5開發(fā)寶藏案例分享---Web開發(fā)優(yōu)化案例分享

    系統網絡能力(如<span class=\"ne-text\">@ohos.net.http</span>)進行預連接,但
    發(fā)表于 06-12 17:20

    鴻蒙5開發(fā)寶藏案例分享---Web加載時延優(yōu)化解析

    鴻蒙開發(fā)寶藏:Web加載完成時延優(yōu)化實戰(zhàn) 大家好呀!今天在翻鴻蒙開發(fā)者文檔時,發(fā)現了一個隱藏的 性能優(yōu)化寶藏區(qū) ——官方竟然悄悄提供了超多實戰(zhàn)案例!尤其是****Web加載完成時延分析
    發(fā)表于 06-12 17:11

    鴻蒙5開發(fā)寶藏案例分享---穿戴開發(fā)寶藏指南

    太棒了!鴻蒙官方文檔里竟然藏著這么個大寶藏!之前開發(fā)智能穿戴應用時感覺資源匱乏,沒想到在“最佳實踐”里藏著這么多 現成的、高質量的案例和代碼 !今天必須跟大家好好分享一下這個“輕量級智能穿戴開發(fā)實踐
    發(fā)表于 06-12 16:12

    鴻蒙5開發(fā)寶藏案例分享---自由流轉的拖拽多屏聯動

    ? 【干貨預警】鴻蒙開發(fā)寶藏案例大揭秘!手把手教你玩轉常用功能**?** 大家好呀~,今天在扒拉鴻蒙文檔的時候,突然發(fā)現官方竟然藏了一堆超實用的開發(fā)案例! ?** 之前總覺得
    發(fā)表于 06-03 18:50

    在KaihongOS應用開發(fā)中,如何利用Socket進行數據傳輸

    參考:@ohos.net.socket (Socket連接)。 應用 TCP/UDP 協議進行通信 UDP 與 TCP 流程大體類似,下面以 TCP 為例: import 需要的 socket 模塊
    發(fā)表于 05-08 07:25

    與S32G274A一起開發(fā)網關,LLCE報告LLCE_ERROR_MB_NOTAVAILABLE怎么解決?

    您好,我們正在與 S32G274A 一起開發(fā)網關,我們發(fā)現 LLCE 有時會報告LLCE_ERROR_MB_NOTAVAILABLE。發(fā)生這種情況時,它不會停止報告錯誤消息,直到 CAN 總線斷開連接。 您能告訴我為什么會這樣嗎?我該如何解決這個問題?
    發(fā)表于 03-27 07:22