精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

跟著小白一起學(xué)鴻蒙—WebSocket的使用和流程分析

系統(tǒng) OpenHarmony
WebSocket是一種網(wǎng)絡(luò)通訊協(xié)議,很多網(wǎng)絡(luò)開(kāi)發(fā)工作者都需要它。本文介紹在OpenHarmony上WebSocket協(xié)議的使用方法。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

WebSocket是一種網(wǎng)絡(luò)通訊協(xié)議,很多網(wǎng)絡(luò)開(kāi)發(fā)工作者都需要它。本文介紹在OpenHarmony上WebSocket協(xié)議的使用方法。

WebSocket有什么不同

很多人會(huì)問(wèn),有了HTTP協(xié)議,尤其是RESTFul接口,為什么還需要使用WebSocket?它能帶來(lái)什么好處呢?那是因?yàn)镠TTP協(xié)議有一個(gè)缺陷,通訊只能由客戶(hù)端發(fā)起。簡(jiǎn)單舉例,我們的天氣應(yīng)用程序需要查詢(xún)天氣就需要客戶(hù)端向服務(wù)器請(qǐng)求數(shù)據(jù),服務(wù)器查詢(xún)后返回結(jié)果。但是如果天氣有變化,客戶(hù)端是無(wú)法收到服務(wù)端推送過(guò)來(lái)的消息,所以只能定時(shí)調(diào)用或者用戶(hù)手動(dòng)刷新。
這種單向請(qǐng)求導(dǎo)致需要雙向通訊的應(yīng)用只能在客戶(hù)端采用輪詢(xún)的手段來(lái)實(shí)現(xiàn),引申出來(lái)的問(wèn)題就是效率低,服務(wù)端負(fù)載大。所以就誕生了WebSocket。

WebSocket簡(jiǎn)介

WebSocket協(xié)議誕生于2008年,2011年成為國(guó)際標(biāo)準(zhǔn),所有瀏覽器都支持。它最大的特點(diǎn)就是雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種。

  • HTTP流程

  • WebSocket流程

特點(diǎn):

  1. 在TCP協(xié)議上層,服務(wù)器端的實(shí)現(xiàn)比較容易。
  2. 與HTTP協(xié)議有著良好的兼容性。默認(rèn)端口也是80和443,并且握手階段采用 HTTP 協(xié)議,因此握手時(shí)不容易屏蔽,能通過(guò)各種 HTTP 代理服務(wù)器。
  3. 數(shù)據(jù)格式比較輕量,性能開(kāi)銷(xiāo)小,通信高效。
  4. 可發(fā)送文本,也可發(fā)送二進(jìn)制數(shù)據(jù)。
  5. 沒(méi)有同源限制,客戶(hù)端可以與任意服務(wù)器通信。
  6. 協(xié)議標(biāo)識(shí)符是ws(如果加密,則為wss),服務(wù)器網(wǎng)址就是URL。

WebSocket在OpenHarmony上的實(shí)現(xiàn)

WebSocket在OpenHarmony上的使用

  1. 導(dǎo)入d.ts文件
//導(dǎo)入websocket接口
import webSocket from '@ohos.net.webSocket'
//websocket的基本接口函數(shù)
connect(url: string, callback: AsyncCallback<boolean>): void;
send(data: string | ArrayBuffer, callback: AsyncCallback<boolean>): void;
close(callback: AsyncCallback<boolean>): void;
  1. 基本的websocket流程
let promise = socket.connect(url)
promise.then((value) => {
Logger.info(TAG, `connect success`)
}).catch((err) => {
Logger.info(TAG, `connect fail, error:${JSON.stringify(err)}`)
})
socket.on('open', (err, value) => {
prompt.showToast({ message: '連接成功', duration: 1500 })
})
socket.on('message', (err, value) => {
Logger.info(TAG, `on message, value = ${value}`)
})

Framework層的實(shí)現(xiàn)

  1. Napi接口實(shí)現(xiàn)。
//foundation/communication/netstack/frameworks/js/napi/websocket/websocket_module/src/websocket_module.cpp
std::initializer_list<napi_property_descriptor> properties = {
DECLARE_NAPI_FUNCTION(WebSocket::FUNCTION_CONNECT, WebSocket::Connect),
DECLARE_NAPI_FUNCTION(WebSocket::FUNCTION_SEND, WebSocket::Send),
DECLARE_NAPI_FUNCTION(WebSocket::FUNCTION_CLOSE, WebSocket::Close),
DECLARE_NAPI_FUNCTION(WebSocket::FUNCTION_ON, WebSocket::On),
DECLARE_NAPI_FUNCTION(WebSocket::FUNCTION_OFF, WebSocket::Off),
};
ModuleTemplate::DefineClass(env, exports, properties, INTERFACE_WEB_SOCKET);
  1. 異步執(zhí)行動(dòng)作。
//foundation/communication/netstack/frameworks/js/napi/websocket/async_work/src/websocket_async_work.cpp
//初始化libwebsocket需要的callback
static const lws_protocols LWS_PROTOCOLS[] = {
{"lws-minimal-client", WebSocketExec::LwsCallback, 0, 0},
{nullptr, nullptr, 0, 0}, // this line is needed
};

//填裝websocket上下文信息
static inline void FillContextInfo(lws_context_creation_info &info)
{
info.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
info.port = CONTEXT_PORT_NO_LISTEN;
info.protocols = LWS_PROTOCOLS;
info.fd_limit_per_thread = FD_LIMIT_PER_THREAD;
}

void WebSocketAsyncWork::ExecConnect(napi_env env, void *data)
{
BaseAsyncWork::ExecAsyncWork<ConnectContext, WebSocketExec::ExecConnect>(env, data);
}

void WebSocketAsyncWork::ExecSend(napi_env env, void *data)
{
BaseAsyncWork::ExecAsyncWork<SendContext, WebSocketExec::ExecSend>(env, data);
}

void WebSocketAsyncWork::ExecClose(napi_env env, void *data)
{
BaseAsyncWork::ExecAsyncWork<CloseContext, WebSocketExec::ExecClose>(env, data);
}
  1. 執(zhí)行結(jié)果日志打印。
//正確連接
I C015b0/NetMgrSubsystem: NETSTACK [connect_context.cpp 43] ConnectContext NapiUtils::GetValueType(GetEnv(), params[1]) == napi_function
I C015b0/NetMgrSubsystem: NETSTACK [module_template.h 61] js params parse OK ? 1
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 471] begin connect, parse url
E C015b0/NetsysNativeService: [HookSocket-(netsys_sock_client.cpp:45)]musl create socket failed
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 228] start service
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 533] ConnectCallback connect success

//錯(cuò)誤連接
I C015b0/NetMgrSubsystem: NETSTACK [connect_context.cpp 43] ConnectContext NapiUtils::GetValueType(GetEnv(), params[1]) == napi_function
I C015b0/NetMgrSubsystem: NETSTACK [module_template.h 61] js params parse OK ? 1
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 471] begin connect, parse url
E C015b0/NetsysNativeService: [HookSocket-(netsys_sock_client.cpp:45)]musl create socket failed
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 358] LwsCallbackClientConnectionError DNS NXDOMAIN
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 427] LwsCallbackWsiDestroy
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 515] ExecConnect websocket connect failed
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 433] LwsCallbackProtocolDestroy
I C015b0/NetMgrSubsystem: NETSTACK [websocket_exec.cpp 530] ConnectCallback connect failed

小結(jié)

OpenHarmony目前已支持WebSocket調(diào)用,通過(guò)回調(diào)函數(shù)返回調(diào)用結(jié)果。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-02-27 16:30:32

鴻蒙開(kāi)源協(xié)議分析

2023-03-15 16:19:03

BinderIPC工具

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開(kāi)發(fā)畫(huà)布功能

2023-03-30 09:19:54

SELinux安全子系統(tǒng)

2022-08-19 19:02:20

開(kāi)源鴻蒙操作系統(tǒng)

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍(lán)牙應(yīng)用鴻蒙

2023-01-03 15:09:10

鴻蒙常用工具

2023-04-06 09:18:52

鴻蒙AVPlayerAVRecorder

2022-10-20 16:40:16

JS應(yīng)用控制LED鴻蒙

2022-10-09 15:05:50

NAPI框架鴻蒙

2022-12-06 15:39:16

鴻蒙主干代碼

2022-11-24 14:34:41

Hap程序鴻蒙

2022-11-22 15:15:46

Wi-Fi鴻蒙

2022-10-17 14:29:24

鴻蒙應(yīng)用開(kāi)發(fā)

2022-11-28 15:42:39

分布式軟總線鴻蒙

2022-12-09 15:34:38

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品一区二区三区成人| 一区二区成人av| 成年人视频观看| 国产三级在线免费| 国产一区二区三区视频在线播放| 久精品免费视频| 精品无码在线视频| 先锋影音一区二区| 婷婷亚洲久悠悠色悠在线播放| 日韩精品不卡| 国内爆初菊对白视频| 免费的成人av| 97在线观看免费| 91 在线视频| 蜜桃精品wwwmitaows| 欧美一卡2卡三卡4卡5免费| 69堂免费视频| 久久99亚洲网美利坚合众国| 日本一区二区免费在线| 国产精品日韩一区二区免费视频| 中日韩av在线| 国产精品久久久免费 | 国模一区二区三区私拍视频| 国产精品乱码一区二区| 日韩精品免费视频人成| 68精品国产免费久久久久久婷婷| 极品魔鬼身材女神啪啪精品| 猛男gaygay欧美视频| 日韩欧美在线影院| www.51色.com| 日本成人片在线| 欧美网站在线观看| 9色视频在线观看| 色影视在线观看| 欧美激情综合五月色丁香| 九九九热999| 成人精品在线播放| 精品一区二区在线看| 国产精品美女999| 五月天激情四射| 99精品国产在热久久婷婷| 久久99精品国产99久久6尤物| 成年人二级毛片| 日韩国产一区二区| 色诱女教师一区二区三区| 一区二区三区久久久久| 香蕉久久夜色精品国产更新时间 | 2一3sex性hd| 亚洲国产中文在线| 亚洲精品一区在线观看| 日本美女视频网站| 东京久久高清| 亚洲精品动漫100p| 搡老熟女老女人一区二区| 琪琪久久久久日韩精品| 国产网站欧美日韩免费精品在线观看 | 最近高清中文在线字幕在线观看1| 亚洲一区二区三区三| 日韩a级黄色片| 51漫画成人app入口| 五月婷婷综合在线| 国产91在线视频观看| 欧美1级2级| 欧美猛男男办公室激情| 久久6免费视频| 影音先锋欧美激情| 亚洲级视频在线观看免费1级| 亚洲精品女人久久久| 精品九九在线| 久久久成人av| 日韩大片免费在线观看| 99综合在线| 国产成人亚洲综合91精品| 中文文字幕一区二区三三| 久久国产精品无码网站| 一本久道久久综合狠狠爱亚洲精品| 成av人电影在线观看| 国产精品久久久久久久蜜臀| 中文字幕一区二区三区精彩视频| 四虎影视国产在线视频| 午夜精品久久久久久久| 日韩av一二三四| 亚洲久草在线| 亚洲国产日韩欧美在线99| 国产精品毛片一区二区| 93在线视频精品免费观看| 久久99热精品这里久久精品| 在线天堂中文字幕| 老司机午夜精品| 国产成人精品日本亚洲11| 青青草免费在线| 最好看的中文字幕久久| 国内精品视频一区二区三区| yiren22亚洲综合| 亚洲精品一区在线观看| 日韩黄色中文字幕| 午夜久久一区| 国产成+人+综合+亚洲欧美丁香花| 夜夜嗨av禁果av粉嫩avhd| 国产二区国产一区在线观看| 丁香婷婷激情网| 九九在线视频| 亚洲色图第一区| 欧美亚洲国产成人| 成年永久一区二区三区免费视频| 亚洲第一网站免费视频| 日日碰狠狠添天天爽| 99热免费精品在线观看| 成人av番号网| 九色国产在线观看| 亚洲va韩国va欧美va| 毛片毛片毛片毛| 欧美美乳视频| 韩国视频理论视频久久| 国产手机视频在线| 欧美国产日韩一二三区| 伊人成色综合网| 亚洲一区二区三区在线免费| 中文字幕九色91在线| 日本一级一片免费视频| 国产suv一区二区三区88区| 亚洲欧洲日韩精品| 日韩高清中文字幕一区二区| 精品国产乱码久久久久久蜜臀 | 国产成人综合久久| 99精品视频免费看| 中文在线一区二区| 亚洲乱码国产乱码精品精天堂| 中日韩一级黄色片| 爽爽淫人综合网网站| 国产伦精品一区二区三区四区视频| 米奇777四色精品人人爽| 色婷婷综合久久久中文字幕| 日韩aaaaa| 在线欧美三区| 国产精品久久国产精品| 日韩精品分区| 日韩免费电影一区| 精品国产欧美日韩不卡在线观看| 久久成人18免费观看| 婷婷久久青草热一区二区| 国产精欧美一区二区三区蓝颜男同| 亚洲成人中文字幕| 日韩精品一区三区| 成人国产精品免费观看动漫| 亚洲精品中文字幕有码专区| 亚洲综合日韩中文字幕v在线| 日本在线观看网站| 欧美日韩国产综合草草| 国产激情av在线| 青青青爽久久午夜综合久久午夜| 欧美日本亚洲| 天天综合网站| 中文字幕亚洲在线| 国产精品久久久久久久久久久久久久久久 | 国产精品99久久久| 人人妻人人澡人人爽欧美一区| 涩爱av色老久久精品偷偷鲁| 欧美韩国理论所午夜片917电影| 亚洲成人77777| 五月天中文字幕一区二区| av2014天堂网| 日韩电影在线观看一区| 在线成人av电影| 精品国产乱码一区二区三区| 欧美激情中文网| 亚洲人在线观看视频| 日韩欧美在线视频日韩欧美在线视频 | 欧美国产乱子伦| 一级黄色片在线免费观看| 欧美日韩国产亚洲一区| 精品不卡在线| 欧洲成人一区| 美日韩在线视频| 神马午夜在线观看| 欧洲av一区二区嗯嗯嗯啊| 久久高清内射无套| 91视频.com| 国产福利在线免费| 国内精品久久久久久久影视蜜臀 | 国产精品视频一| 欧美激情黑人| 亚洲国产古装精品网站| 自拍偷拍校园春色| 亚洲欧美另类久久久精品2019| 色悠悠在线视频| 日韩电影免费在线看| 麻豆映画在线观看| 亚洲成aⅴ人片久久青草影院| 国产在线视频欧美| 美女91在线看| 久久综合久久美利坚合众国| 日本五码在线| 日韩视频免费观看高清在线视频| 天天干天天色综合| 亚洲自拍偷拍网站| 国产精品久久久免费看| 99精品视频在线免费观看| 欧美美女性视频| 亚洲欧美视频一区二区三区| 青青在线免费视频| 精品视频黄色| 久久精品久久精品国产大片| 精品国产亚洲一区二区在线观看| 日本精品视频网站| 成人爽a毛片免费啪啪动漫| 最近2019中文字幕第三页视频| 手机看片国产1024| 日韩情涩欧美日韩视频| 中文字幕乱码人妻二区三区| 欧美日韩激情视频8区| 91在线播放观看| 中文字幕欧美激情一区| 丰满少妇一区二区三区| 福利91精品一区二区三区| 深夜黄色小视频| 日日欢夜夜爽一区| 777精品久无码人妻蜜桃| 欧美日韩国产欧| www.黄色网址.com| 日韩精品午夜| 日韩精品一区二区三区丰满| 视频福利一区| 九色一区二区| 精品女人视频| 国产精品推荐精品| av日韩在线播放| 亚洲一区中文字幕| 日韩综合av| 成人xxxx视频| 日韩在线激情| 成人网欧美在线视频| 日韩成人综合网| 国产精品丝袜一区二区三区| 另类中文字幕国产精品| 奇米四色中文综合久久| 中文字幕在线高清| 88xx成人精品| 一区二区乱码| 欧美在线亚洲一区| 亚洲欧美韩国| 国产成人亚洲精品| 99久久精品一区二区成人| 国产精品高潮粉嫩av| 丝袜美腿诱惑一区二区三区| 国产99久久精品一区二区 夜夜躁日日躁| 日本а中文在线天堂| 欧美在线影院在线视频| jk漫画禁漫成人入口| 欧洲精品毛片网站| av免费在线一区| 国产精品午夜一区二区欲梦| 伊人久久大香线蕉综合影院首页| 91免费在线视频| 日韩中文字幕无砖| 国产伦精品一区二区三区| 国偷自产av一区二区三区| 久久99精品国产一区二区三区| 免费av一区| 亚洲视频在线二区| 欧美成人久久| 国产九九九九九| 日韩二区三区四区| 免费av不卡在线| 波多野结衣中文字幕一区| 大黑人交xxx极品hd| 国产人久久人人人人爽| 任我爽在线视频| 亚洲一区二区三区国产| 国产精品第5页| 欧美剧情片在线观看| 性猛交xxxx乱大交孕妇印度| 日韩成人激情在线| 在线激情网站| 欧美精品电影在线| 在线日韩影院| 亚洲一区二区三区视频播放| 欧美三级午夜理伦三级小说| 亚洲a∨一区二区三区| 欧美区国产区| 欧美 激情 在线| 精品一区二区在线视频| 91精品小视频| 中文字幕亚洲区| 久久亚洲国产成人精品性色| 色8久久人人97超碰香蕉987| 91亚洲国产成人精品一区| 精品欧美乱码久久久久久| 国产剧情在线观看| 欧美激情亚洲另类| 丁香婷婷久久| 国产精品一区免费观看| 成人免费a**址| 青青青免费在线| 黑人巨大精品欧美黑白配亚洲| 美女又爽又黄免费| 亚洲欧美视频在线观看| 久久亚洲精品石原莉奈| 精品国产一区二区三区不卡| 在线视频1区2区| 57pao成人国产永久免费| 成人97精品毛片免费看| 欧美13一14另类| 亚洲情侣在线| 五月天激情视频在线观看| 99久久伊人久久99| 极品颜值美女露脸啪啪| 欧美日韩色一区| 免费a级毛片在线观看| 欧美激情综合亚洲一二区| 欧美久久久网站| 日本在线播放一区| 国产欧美日韩一级| 久久久久中文字幕亚洲精品| 国产精品日日摸夜夜摸av| 亚洲国产成人无码av在线| 亚洲成avwww人| 国产黄网站在线观看| 国产精品自产拍在线观看中文| 色婷婷精品视频| 日本a视频在线观看| 国产成人综合精品三级| 手机av在线看| 7777精品伊人久久久大香线蕉经典版下载 | 久久久久国产精品一区三寸 | 国产精品久久久久久久岛一牛影视 | 豆国产97在线| 欧美女人交a| avtt中文字幕| 亚洲国产乱码最新视频| 精品国产一级片| 久久精品国产视频| 欧美黄色成人| 正在播放一区| 久久精品国产第一区二区三区| 一级二级黄色片| 欧美在线观看18| av福利在线播放| 国产在线精品一区免费香蕉| 亚洲h色精品| 日本亚洲一区二区三区| 亚洲主播在线播放| 狠狠人妻久久久久久综合麻豆| 欧美激情一区二区三区久久久| 日韩一区二区三区精品视频第3页| 亚洲爆乳无码精品aaa片蜜桃| 成人丝袜18视频在线观看| 日韩精品久久久久久久| 日韩av在线不卡| 日产精品一区| 亚洲最大免费| 国产精品456| 日本三级黄色大片| 亚洲男人天堂手机在线| av在线日韩| 国产又粗又爽又黄的视频| 国产精品77777| 亚洲天堂一区在线观看| 亚洲视频在线播放| 欧美激情福利| 精品国偷自产一区二区三区| 91亚洲精品久久久蜜桃网站| 成人毛片一区二区三区| 在线色欧美三级视频| 日韩一区二区三区四区五区| 日韩一级特黄毛片| 97se亚洲国产综合在线| 欧美一级黄视频| 欧美成人免费在线观看| 超碰精品在线观看| 97成人在线免费视频| 国产欧美日韩视频在线观看| 国产日韩一级片| 91精品国产乱码久久久久久久久| 少妇精品久久久一区二区三区| 国产一伦一伦一伦| 亚洲在线中文字幕| 国产一级片在线| 18成人在线| 欧美中文日韩| www.毛片com| 亚洲欧美一区二区三区在线| 香蕉久久久久久| 欧美 丝袜 自拍 制服 另类| 国产精品高潮呻吟| 天堂av中文字幕| 成人在线视频福利| 男人的天堂亚洲| 欧美日韩国产精品综合 | 中文在线观看免费| 免费看成人午夜电影| 黑人精品欧美一区二区蜜桃| 可以免费在线观看的av| 久久伊人精品天天| 国产成人三级| 中文字幕乱视频| 91精品国产aⅴ一区二区| 亚洲一区资源| 日韩视频在线视频| 亚洲欧洲日韩女同|