chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

    文章

    9439

    瀏覽量

    156071
  • 網絡管理
    +關注

    關注

    0

    文章

    127

    瀏覽量

    29125
  • WebSocket
    +關注

    關注

    0

    文章

    33

    瀏覽量

    4355
  • 鴻蒙
    +關注

    關注

    60

    文章

    2839

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    鴻蒙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-03 18:50

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

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

    AWTK-WEB 快速入門(6) - JS WebSocket 應用程序

    WebSocket可以實現雙向通信,適合實時通信場景。本文介紹一下使用Javacript語言開發(fā)AWTK-WEB應用程序,并用WebSocket與服務器通訊。用AWTKDesigner新建一個應用程
    的頭像 發(fā)表于 02-26 11:42 ?619次閱讀
    AWTK-WEB 快速入門(6) - JS <b class='flag-5'>WebSocket</b> 應用程序

    AWTK-WEB 快速入門(5) - C 語言 WebSocket 應用程序

    導讀WebSocket可以實現雙向通信,適合實時通信場景。本文介紹一下使用C語言開發(fā)AWTK-WEB應用程序,并用WebSocket與服務器通訊。用AWTKDesigner新建一個應用程序先安裝
    的頭像 發(fā)表于 02-19 11:49 ?878次閱讀
    AWTK-WEB 快速入門(5) - C 語言 <b class='flag-5'>WebSocket</b> 應用程序

    適用于MySQL和MariaDB的.NET連接

    支持 ORM 的適用于 MySQL 和 MariaDB 的 .NET 連接器 dotConnect for MySQL 是一種高性能 ADO.NET 數據提供程序,可在開發(fā) MySQL
    的頭像 發(fā)表于 01-16 14:17 ?786次閱讀
    適用于MySQL和MariaDB的.<b class='flag-5'>NET</b><b class='flag-5'>連接</b>器

    dotConnect:基于ADO.NET架構的增強型數據連接解決方案

    dotConnect是一個基于ADO.NET架構的增強型數據連接解決方案,是一個采用了大量創(chuàng)新技術的開發(fā)框架。dotConnect是一款適用于主要數據庫和流行云應用程序的高性能數據提供程序,為
    的頭像 發(fā)表于 01-07 11:07 ?692次閱讀
    dotConnect:基于ADO.<b class='flag-5'>NET</b>架構的增強型數據<b class='flag-5'>連接</b>解決方案

    鴻蒙Flutter實戰(zhàn):14-現有Flutter 項目支持鴻蒙 II

    ).jpeg 總結 通過 FVM 管理多個 Flutter SDK 版本,僅在鴻蒙調測打包時,切換到 ohos-flutter SDK 通過 apps 殼工程,將鴻蒙化適配的代碼,盡量
    發(fā)表于 12-26 14:59