国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

實時聊天室之WebSocket實戰

網絡 通信技術
WebSocket 是 一種在單個 TCP 連接上進行全雙工通訊的網絡通信協議。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

前言

如果要實現像微信聊天一樣的功能,在組網內進行通信顯然是不夠的,所以軟總線并不作用與這種遠距離傳輸。如果我們要完成微信的聊天功能,傳統的方法就是利用webSocket借助服務器進行全雙工通信。

WebSocket是什么?

WebSocket 是 一種在單個 TCP 連接上進行全雙工通訊的網絡通信協議。

在以前沒有webSocket的時候,大家都用HTTP協議進行網絡通信,但是HTTP協議是一個無狀態,無連接,單向的應用層協議,因此只能讓客戶端對服務端進行單向請求,服務端無法主動向客戶端發送消息,導致了像實時聊天這種業務開展起來比較困難。

有開發者就使用HTTP進行長輪詢的方案,也就是說需要HTTP在一段時間內必須一直保持連接請求,以獲取最新的服務器的消息。這樣顯然效率低下,而且非常浪費資源。

因此就誕生了WebSocket,只需要進行一次連接,就可以一直保持全雙工的通信狀態。

Demo展示

下面我們就來用官方提供的WebSocket接口實現一個簡易實時聊天室的Demo。效果如下:

#夏日挑戰賽#【FFH】實時聊天室之WebSocket實戰-開源基礎軟件社區

代碼實現

可以看到官方文檔的接口說明,我們只需要簡單用到幾個接口就可以實現我們的業務需求了。

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/websocket-connection-0000001333321005。

#夏日挑戰賽#【FFH】實時聊天室之WebSocket實戰-開源基礎軟件社區

1、申請網絡權限

在config.json文件里面注冊網絡權限,該權限允許程序打開網絡套接字,進行網絡連接。

"reqPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]

2、導入webSocket模塊

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

3、創建webSocket對象

接著我們調用createWebSocket()接口生成一個webSocket對象,并且保存起來。

let ws = webSocket.createWebSocket();

4、連接webSocket通道

調用connect()接口進行連接。這里需要一個URL作為參數傳入,在這個demo中,直接用了一個以前開發好的服務器接口進行調用,但是不對外開放,因此大家只需要將自己開發好的接口地址放到”wsURL“內即可。

onInit() {
let that = this;
ws.connect("wsURL", (err, value) => {
if (!err) {
console.log("xxx---connect success");
} else {
console.log("xxx---connect fail, err:" + JSON.stringify(err));
}
});
},

5、訂閱通道內消息更新

這里我們調用on( type:‘message’ )接口進行消息監聽,這里要注意的是服務端傳遞過來的是字符串類型,所以如果消息是JSON對象,則需要用JSON.parse()進行解析,還原成JSON對象。

onInit() {
let that = this;
ws.on('message', (err, value) => {
console.log("xxx---on message, message:" + value);
//傳遞的是序列化后的字符串,需要解序列化為JSON對象
let dataObj = JSON.parse(value)
console.log("xxx---parse success---postId: "+dataObj.postId+",message:"+dataObj.message)
that.message.push(dataObj)
console.log("xxx---check message: "+JSON.stringify(that.message))
});
},

6、發送消息

緊接著調用send()接口進行消息的發送,這里注意,如果要傳遞的是JSON對象,要使用JSON.stringify()進行序列化操作, 保證我們傳遞的是流字符串的形式。

在該接口的回調中,我們也可以打印出來,看看消息是否發送成功。

sendMessage(){
let that = this;
let data = {
postId:that.id,
message:that.sendMes
}
let dataStr = JSON.stringify(data)
ws.send(dataStr, (err, value) => {
if (!err) {
console.log("xxx---send success");
} else {
console.log("xxx---send fail, err:" + JSON.stringify(err));
}
});
that.message.push(data)
},

7、隱藏標題欄

細心的小伙伴就會發現,我的demo展示的黑色標題欄不見了,其實是可以隱藏掉的,只需要在config.json文件中module.abilities下添加幾行代碼即可。

"metaData":{
"customizeData":[
{
"name": "hwc-theme",
"value": "androidhwext:style/Theme.Emui.NoTitleBar",
"extra":""
}
]
}

8、樣式設計

接著就是簡單設計一下界面樣式,把獲取到的消息渲染出來就完成啦。

<div class="container">
<div style="width: 100%;height: 8%;color: #ff86868a;font-size: 25px;justify-content: center;position: absolute;">
<text style="top: 10px;">
實時聊天室
</text>
</div>
<list style="height: 80%;">
<list-item for="{{message}}" class="{{$item.postId==id?'listItemRight':'listItemLeft'}}" >
<div class="listItemDiv" >
<text style="padding:5px;border-radius: 10px;font-size: 20px;margin: 5px;max-width: 70%;">
{{$item.message}}
</text>
</div>
</list-item>
</list>
<div style="position: absolute;left:10px;bottom: 20px;">

<textarea id="textarea" class="textarea" extend="true"
placeholder="請輸入聊天信息"
onchange="inputChange" >
</textarea>
<button style="width: 75px;height: 50px;margin-left: 10px;background-color: #ff4848f5;" onclick="sendMessage"> 發送 </button>
</div>

</div>
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
}
.textarea {
placeholder-color: gray;
width: 70%;
}

.listItemDiv{
background-color: #ff87f3d0;
border-radius: 10px;

}

.listItemLeft{
margin: 10px;
width: 100%;
justify-content: flex-start;
}
.listItemRight{
margin: 10px;
width: 100%;
justify-content: flex-end;
}

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2210。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2023-02-10 08:16:48

WebSocket簡易聊天室

2023-01-13 00:02:41

2023-01-05 09:17:58

2025-05-09 08:35:00

聊天室FastAPIWebSocket

2021-11-16 09:38:10

鴻蒙HarmonyOS應用

2011-12-15 11:11:51

JavaNIO

2021-10-14 18:46:29

Websocket瀏覽器API

2015-07-06 10:42:18

PHP聊天室應用

2025-06-09 02:00:00

項目技術棧Spring

2021-12-09 16:48:25

鴻蒙HarmonyOS應用

2022-11-14 08:01:48

2011-06-09 15:44:29

Spring

2022-12-01 08:25:23

eTsTCP聊天室

2015-08-06 17:17:33

swoole聊天室

2022-04-18 10:36:48

社交軟件聊天平臺rocket.cha

2021-02-06 23:26:25

聊天室開發WebSocket

2024-01-18 11:15:46

Pythonsocket聊天室

2013-11-27 10:46:31

JavaEEWebsockets

2024-10-07 10:45:12

點贊
收藏

51CTO技術棧公眾號

久久久精品在线| 美女网站色精品尤物极品姐弟| 日韩毛片免费看| 成人午夜在线免费| 精品伦精品一区二区三区视频 | 成人性爱视频在线观看| 国产精品黄色在线观看| 免费无遮挡无码永久视频| 国产精品一区二区无线| 正在播放91九色| 精品在线你懂的| 亚洲午夜高清视频| 久久99在线观看| 亚洲黄色网址在线观看| 国产精品一二三四五| 欧美一级中文字幕| av成人动漫在线观看| 久久99中文字幕| 91蜜桃免费观看视频| 日韩网址在线观看| 国产区在线观看成人精品| 美女网站视频黄色| 亚洲欧美怡红院| 国产91久久久久蜜臀青青天草二| 亚洲国产乱码最新视频| 精品999视频| 日韩精品一区二区在线观看| 国产乱码午夜在线视频 | 狠狠狠色丁香婷婷综合激情| 亚洲午夜精品国产| 国产福利一区二区三区视频在线 | 久久精品国产精品| 国产精品45p| 国产在线精品成人一区二区三区| 欧美日韩国产亚洲一区| 欧美一区二区高清在线观看| 国产精品99久久久久久似苏梦涵 | 亚洲xxxx3d| 国产精品毛片在线看| 亚洲精品欧洲精品| 91亚洲国产成人精品一区二区三 | 国产中文字幕日韩| 欧美一级网站| 成人黄色av片| 一区二区三区精品| 欧美jizzhd69巨大| 国产亚洲精品美女久久久久| 国产成人精品福利| 精品久久久久久一区| 国产成人精品影院| 爆操妹子视频在线观看| 欧美顶级少妇做爰| 奇米一区二区| 国产视色精品亚洲一区二区| 国产98色在线|日韩| 69日本xxxxxxxxx49| 69堂亚洲精品首页| 久久久久久久久久久久电影| 91精品美女在线| 青青草一区二区三区| 超碰av在线免费观看| 欧美日韩视频在线第一区| av在线一区不卡| 国产欧美日韩中文字幕| 国内久久精品视频| y4480在线8影院| 亚洲午夜色婷婷在线| 91麻豆国产自产在线观看亚洲| 伊人av成人| 香蕉乱码成人久久天堂爱免费| 欧美aa在线| 91久久久久久久久久久| 国产一区二区三区在线观看免费视频| 又黄又爽毛片免费观看| 欧美变态tickle挠乳网站| 麻豆成人入口| 成人在线观看www| 色综合 综合色| 欧美经典影片视频网站| 欧美动漫一区二区| 亚洲欧美色综合| 欧美成人资源| 国产伦一区二区三区色一情| 久久久精品国产免大香伊| 大地资源网3页在线观看| 国产91|九色| 国产一区福利在线| av电影在线观看网址| 992tv成人免费影院| 国模娜娜一区二区三区| 精品无人乱码| 97视频在线观看亚洲| 激情都市一区二区| wwwww在线观看免费视频| 国产91对白在线播放| 国产高清在线精品| 亚洲国产精品精华素| 91精品国产综合久久久久久蜜臀| 久久久电影一区二区三区| 8x8ⅹ拨牐拨牐拨牐在线观看| 99中文视频在线| 一区二区成人在线观看| 亚洲精品观看| 亚洲欧洲日产国码无码久久99| 亚洲国产精品字幕| 99精品热视频只有精品10| 一级毛片电影| 91成人免费观看网站| 99国产精品久久久久久久久久| 亚洲无线看天堂av| 黄色小网站91| 欧美唯美清纯偷拍| 一本精品一区二区三区| 高清色视频在线观看| 日本久久久久久久久| 亚洲国产高清aⅴ视频| 国产一区二区视频在线看| 精品无码国模私拍视频| 国产香蕉一区二区三区在线视频 | 日本综合视频| 婷婷五月色综合| 欧美二区乱c少妇| 亚洲国产综合在线看不卡| 国产系列在线观看| 国产精品久久久久久久久婷婷| 欧美日韩在线第一页| 自拍视频亚洲| 在线免费看a| 欧美性天天影院| 欧美刺激脚交jootjob| 午夜欧美在线| 国产高清自拍视频在线观看| 国产一区免费观看| 欧美成人性福生活免费看| 麻豆国产一区二区| 日本欧美一区| 北条麻妃视频在线| 91精品国产免费久久久久久| 亚洲精品乱码久久久久久久久| 成人精品影院| 成人动漫在线免费观看| 欧美午夜精品久久久久免费视| 精品免费99久久| 韩国午夜理伦三级不卡影院| 自拍网站在线观看| 日韩欧美视频网站| 日韩av观看网址| 日韩欧美国产一区二区| 亚洲性色视频| 制服丝袜专区在线| 久久久久免费精品| 国产精品精品视频一区二区三区| 91久久国产综合久久| 日韩国产欧美视频| 日韩欧美一区二区三区在线观看| 最近免费中文字幕中文高清百度| 欧美在线性视频| 欧美性感一类影片在线播放| 国产在线精品国自产拍免费| 在这里有精品| av片在线看| 黄网站欧美内射| 国产精品极品尤物在线观看| 欧美日韩在线一区二区| 东方欧美亚洲色图在线| 国产精品嫩模av在线| melody高清在线观看| 国产911在线观看| 欧美一级在线播放| 欧美探花视频资源| 成人的网站免费观看| 精品色999| 成人免费图片免费观看| 99re99| 日韩欧美亚洲在线| 97免费视频在线| 欧美成人aa大片| 亚洲欧洲精品成人久久奇米网| 国产亚洲福利| 日日夜夜精品视频| 麻豆视频在线观看免费网站| 免费在线观看的毛片| 国产一区二区三区色淫影院| 欧美成人免费观看| 欧美日韩国产a| 国产欧美一区二区精品婷婷 | 91免费观看视频| 亚洲激情黄色| 欧美a在线观看| 快射av在线播放一区| 日本a√在线观看| 日韩亚洲视频| 成人在线中文字幕| 美女扒开尿口让男人操亚洲视频网站| 色视频成人在线观看免| 国产亚洲成av人在线观看导航| 老色鬼久久亚洲一区二区| 欧州一区二区| 免费欧美网站| 日韩伦理精品|