精品欧美一区二区三区在线观看 _久久久久国色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)

久久男人资源站| 国产91色在线播放| 成年人性生活视频| 99热99re6国产在线播放| xfplay精品久久| 国产一区视频在线| 国产成人愉拍精品久久| 成人三级视频| 精品国产91亚洲一区二区三区婷婷| 浮妇高潮喷白浆视频| av大片在线看| 成人精品鲁一区一区二区| 国产成人啪精品视频免费网| 日本高清黄色片| 国产66精品| 欧美日韩在线播放| www黄色日本| 黄色网在线免费看| 久久天天做天天爱综合色| 亚洲一区中文字幕| 中文字幕一区二区三区四区视频 | 久久精品av麻豆的观看方式| 久久久久一本一区二区青青蜜月| 毛茸茸多毛bbb毛多视频| 高清不卡一区| 在线观看视频91| av免费观看大全| 久久精品视频观看| 欧美国产日韩亚洲一区| 激情小说综合网| 精品国产av一区二区三区| 秋霞成人午夜伦在线观看| 97超视频免费观看| 久久成人国产精品入口| 天天综合国产| 中文字幕综合在线| 亚洲色成人网站www永久四虎| 国产精品毛片av| 日韩欧美中文字幕一区| 亚洲精品综合在线观看| 97欧美成人| 91国偷自产一区二区开放时间| 日本午夜激情视频| 国产精品一品| 亚洲一区二区三区四区在线免费观看 | 少妇精品久久久| 亚洲激情视频在线| 国产激情视频网站| 麻豆成人入口| 日韩电影中文字幕一区| 亚洲天堂美女视频| 日韩欧美国产大片| 日韩极品精品视频免费观看| 日韩精品一区二区三区高清免费| 99这里只有精品视频| 日韩精品在线网站| 无码人妻一区二区三区精品视频| 国产中文欧美日韩在线| 91精品国产品国语在线不卡| 免费精品99久久国产综合精品应用| 99久久婷婷国产综合精品首页| 91电影在线观看| 黄色国产小视频| 成人在线不卡| 91精品免费观看| 波多野结衣免费观看| 综合伊人久久| 日本欧美日韩| 久久久久久日产精品| 日韩av一区二区三区在线观看 | 亚洲天堂网站| 日韩欧美视频在线| jizz日本免费| 成人久久电影| 欧美美最猛性xxxxxx| 国产无码精品在线播放| 午夜在线播放视频欧美| 国产精品高精视频免费| 国产麻豆免费视频| 成人国产精品免费网站| 日本一区视频在线观看免费| 免费av在线网址| 亚洲一区二区三区中文字幕 | 激情亚洲综合在线| 99精品国产高清在线观看| 香蕉av一区二区三区| 国产欧美一区二区三区鸳鸯浴 | av激情在线| 亚洲图片欧美一区| 国产成人久久777777| 日韩毛片免费看| 精品国产a毛片| xxxx日本黄色| 欧美国产激情| 国产成人精品电影| 国产伦精品一区二区三区四区| 成人综合婷婷国产精品久久免费| 久久久影院一区二区三区| 97超碰国产一区二区三区| 亚洲曰韩产成在线| 亚洲天堂av线| 国产另类在线| 久久精品成人动漫| 日日夜夜综合网| 久草精品在线观看| 久久99精品久久久久久青青日本| aaa日本高清在线播放免费观看| 亚洲少妇屁股交4| 青青青在线播放| av成人app永久免费| 中文字幕亚洲欧美| 毛片基地在线观看| 国产91富婆露脸刺激对白| 日本精品一区二区三区视频| 青草在线视频在线观看| 欧美日韩一区二区三区在线看| 亚洲中文字幕无码一区| 国产精品久久久久久久久妇女| 欧美在线不卡区| 性生活三级视频| 国产精品久久久久久久蜜臀| 欧美变态另类刺激| www.亚洲一二| 欧美成人午夜激情在线| 中文天堂在线播放| 久久综合999| 日韩视频免费播放| 国产成人久久精品一区二区三区| 亚洲无亚洲人成网站77777| 日本三级午夜理伦三级三| 国产一区二区女| 一区不卡字幕| 欧美一级做一级爱a做片性| 精品一区二区三区电影| 国产成人愉拍精品久久| av在线播放不卡| 日韩精品一区二区免费| 日韩在线成人| 欧美乱大交做爰xxxⅹ性3| 国产精品亚洲欧美在线播放| 中文字幕欧美一| 一区二区三区 日韩| 精品久久久久久久| 国产成人精品久久二区二区91| 天天干天天操av| 亚洲高清不卡在线观看| 成人做爰www看视频软件| 午夜欧美精品久久久久久久| 亚洲专区国产精品| 最新日本在线观看| 精品少妇一区二区三区免费观看| 婷婷在线精品视频| 国产高清一区日本| www.av91| 日本福利一区| 日本久久91av| h视频在线免费| 欧美日韩在线亚洲一区蜜芽| www.黄色com| 国产一区啦啦啦在线观看| 一区二区三区日韩视频| 久久伊人影院| 久久久久久亚洲| 五月婷婷激情在线| 一道本成人在线| 欧美人与性囗牲恔配| 乱一区二区av| 91嫩草国产丨精品入口麻豆| 91精品导航| 91大神福利视频在线| 精品999视频| 欧美日韩成人一区| 九九视频免费看| 2023国产精品视频| 久久久久久蜜桃一区二区| 久久久人成影片免费观看| aaa级精品久久久国产片| 9765激情中文在线| 在线视频欧美日韩| www.中文字幕| 日韩欧美中文字幕在线观看 | 久久99高清| 91九色蝌蚪国产| av在线资源| 在线观看精品国产视频| 精品国产免费无码久久久| 黑人精品xxx一区一二区| 国产黄色大片免费看| 国产精品77777| 国产成人亚洲精品无码h在线 | 女人色极品影院| 国产99精品| 51国偷自产一区二区三区| 在线观看特色大片免费视频| 日韩一区在线视频| 欧美套图亚洲一区| 日韩一区二区视频在线观看| 亚洲永久精品在线观看| 亚洲欧美偷拍另类a∨色屁股| 精品黑人一区二区三区观看时间| 美女在线视频一区| 极品美女扒开粉嫩小泬| 国产精品久久久久久影院8一贰佰| 国产伦精品一区二区三区照片91| www.26天天久久天堂| 久久人人爽人人爽人人片av高请 | 欧美18免费视频| 成人精品一区二区三区| 久久91导航| 午夜精品福利电影| 国产激情视频在线| 亚洲性无码av在线| 四季av日韩精品一区| 538在线一区二区精品国产| 欧美精品韩国精品| 亚洲国产精品久久艾草纯爱| chinese全程对白| 久久精品一区二区| 色婷婷免费视频| 国产精品1024久久| 色一情一区二区三区| 日韩一区精品字幕| 日本黄色三级大片| 亚洲激情成人| 女人被男人躁得好爽免费视频| 99久久www免费| 亚洲草草视频| 欧美丝袜激情| 视频在线精品一区| 国产免费久久| 日本不卡一区二区三区视频| 日本精品影院| 久久人人九九| 日本福利一区| 免费看成人av| 香蕉久久精品| 欧美人与性禽动交精品| 欧洲在线一区| 欧美18视频| 精品中文一区| 日本一区二区三区视频在线观看| 九九精品久久| 日韩视频在线播放| 欧洲杯什么时候开赛| 日韩在线国产| 色一区二区三区四区| 亚洲精品中文综合第一页| 日韩欧美自拍| 五月天综合婷婷| 欧美成人综合| 奇米777四色影视在线看| 欧美日韩岛国| 青青青青在线视频| 亚洲裸体俱乐部裸体舞表演av| 美女扒开大腿让男人桶| 影音先锋久久| 久久无码高潮喷水| 日本中文一区二区三区| 亚洲 国产 图片| 国产麻豆一精品一av一免费 | 久久久精品国产网站| 国产美女福利在线| 欧美高跟鞋交xxxxhd| cao在线视频| 国产91免费看片| 国产资源一区| 99re6在线| 欧美尿孔扩张虐视频| 欧美亚洲国产免费| 91久久久精品国产| 国产成a人亚洲精v品在线观看| 亚洲美女啪啪| 国产理论在线播放| 精品亚洲成a人| av免费观看不卡| 91啦中文在线观看| 二区三区四区视频| 亚洲午夜av在线| 免费精品一区二区| 欧美一区二区三区小说| 三级黄视频在线观看| 丝袜美腿精品国产二区| 欧美精品videossex少妇| 茄子视频成人在线| 国色天香久久精品国产一区| 精品乱码一区| 午夜欧美在线| 人妻有码中文字幕| 国产一区二区三区蝌蚪| 中文字幕5566| 亚洲精品国产高清久久伦理二区| 一级片视频在线观看| 678五月天丁香亚洲综合网| 亚洲日本在线播放| www.国产一区| 成人在线黄色电影| 成人网页在线免费观看| 牲欧美videos精品| 亚洲精品少妇一区二区| 日韩国产成人精品| 性色av蜜臀av浪潮av老女人 | 一区视频二区视频| 国产欧美精品久久| 亚洲在线观看网站| 国产日韩欧美精品综合| 国产一级二级三级视频| 欧美久久久久久久久| 免费看男男www网站入口在线| 精品中文字幕乱| 日韩欧美激情| 日韩av高清在线播放| 亚洲免费成人| 波多野结衣免费观看| 国产精品色婷婷久久58| 精品不卡一区二区| 亚洲国产91精品在线观看| 精品国产丝袜高跟鞋| 国产福利精品av综合导导航| 免费日韩一区二区三区| 国产精品久久久久久久久电影网| 老司机一区二区| 国产交换配乱淫视频免费| 午夜一区二区三区视频| 国产高清在线观看视频| 久久中文精品视频| 欧美激情三区| 亚洲欧洲精品一区| 日韩精品欧美精品| 黄色aaa视频| 欧美日韩国产色| 欧美熟妇交换久久久久久分类| 欧美猛交ⅹxxx乱大交视频| 国产成人免费av一区二区午夜| 亚洲精品高清视频| 日韩经典一区二区| 男人舔女人下部高潮全视频| 欧美日韩一区二区免费视频| 日韩一级在线播放| 韩国19禁主播vip福利视频| 日韩欧美高清一区二区三区| 免费日韩在线观看| 国产剧情一区二区三区| 18岁成人毛片| 精品美女在线播放| h片精品在线观看| 国产尤物91| 国产一区二区三区的电影 | 午夜免费一区二区| 国产拍欧美日韩视频二区| 日本成人一级片| 中文字幕亚洲综合| 精品国产亚洲一区二区在线观看| 午夜啪啪福利视频| 国产福利一区二区| 国产精品18p| 精品视频在线播放| 另类专区亚洲| 亚洲美女网站18| 黑人精品欧美一区二区蜜桃| 成人在线观看小视频| 精品电影一区二区| 一区一区三区| 亚洲精品在线免费看| 国产综合色在线| 精品无码久久久久久久| 亚洲国产精品成人一区二区| 在线免费三级电影网站| 日韩精品一区二区三区外面| 麻豆成人91精品二区三区| 久久中文免费视频| 亚洲精品99999| 草民电影神马电影一区二区| 樱空桃在线播放| av一区二区三区黑人| 伊人久久中文字幕| 久热精品视频在线| 欧美一区二区三区红桃小说| av在线无限看| 亚洲午夜在线电影| 久久久久久女乱国产| 91精品在线影院| 制服诱惑一区二区| 亚洲欧洲综合网| 精品99一区二区三区| 欧美黑人一区| 91视频 - 88av| 久久久高清一区二区三区| 国产日产亚洲系列最新| 午夜精品一区二区三区视频免费看| 在线看成人短视频| 奇米777在线| 在线观看av一区| 黄色大片在线| 先锋影音一区二区三区| 成人黄色大片在线观看| 中文在线资源天堂| 午夜精品三级视频福利| 小说区亚洲自拍另类图片专区| 精品国产人妻一区二区三区| 欧美精品一卡二卡|