<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body { background-color: paleturquoise; }
.box1 {
width: 400px;
padding: 10px;
height: 500px;
background: whitesmoke;
margin: auto;
overflow: auto;
}
.phone {
width: 100%;
overflow: hidden;
word-break: break-all;
}
.info {
padding: 10px 0;
overflow: hidden;
}
.name {
clear: both;
color: #ccc;
}
.text {
clear: both;
padding: 5px;
border-radius: 5px;
}
.left .name, .left .text {
float: left;
}
.right .name, .right .text {
float: right;
}
.left .text {
background-color: #FFFFFF;
color: #1A3E10;
}
.right .text {
background-color: #A1E85C;
color: #1A3E10;
}
.sys {
clear: both;
text-align: center;
padding: 30px 0 15px;
}
.sys p {
display: inline-block;
padding: 0;
margin: 0;
font-size: 14px;
color: #fff;
background-color: #ccc;
padding: 2px 10px;
border-radius: 2px;
text-align: center;
}
.box2 {
width: 400px;
margin: 10px auto;
background: white;
padding: 10px;
border: 1px solid #ddd;
}
input {
font-size: 14px;
padding: 5px;
width: 300px;
border: none;
border-radius: 5px;
outline: none;
height: 30px;
}
button {
width: 80px;
font-size: 14px;
border: 1px solid skyblue;
height: 40px;
color: #A1E85C;
background: white;
border-radius: 5px;
}
.inputbox {
display: none;
}
.login {
text-align: center;
margin-top: 50px;
}
.welcome {
width: 100%;
text-align: center;
margin-top: 50px;
color: antiquewhite;
}
h1 {
color: white;
}
</style>
</head>
<body>
<div class="welcome">
<h1>1708A聊天室</h1>
</div>
<div class="login">
<input id="name" type="text" placeholder="創(chuàng)建昵稱,加入聊天室">
<button id="enter">進入</button>
</div>
<div class="inputbox">
<div class="box1">
<div class="phone">
</div>
</div>
<div class="box2">
<input id="socket_text" type="text">
<button id="socket_send">發(fā)送</button>
</div>
</div>
<script src="[jquery-3.2.1.min.js](jquery-3.2.1.min.js)"></script>
<script>
let userInfo = {
'userName': '',
'isSys': 0,
'content': ''
}
$('#enter').on('click', function () {
userInfo.userName = $('#name').val()
if (userInfo.userName == '') {
alert('請輸入用戶名');
return false
}
else {
$('.login').hide();
$('.inputbox').show();
//建立連接 初始化WebSocket
let Socket = new WebSocket('ws://127.0.0.1:2347')
//開啟連接
Socket.onopen = function () {
userInfo.isSys = 1 // 是系統(tǒng)消息
Socket.send(JSON.stringify(userInfo)) // send()只能發(fā)送字符串
};
// 接受信息 onmessage
Socket.onmessage = function (event) {
let data = JSON.parse(event.data)
if (data.isSys) {
$('.phone').append(`<div class="sys"><p>系統(tǒng)消息:${data.userName}上線了</p></div>`)
} else {
if (userInfo.userName !== data.userName) {
$('.phone').append(`<div class="info left"><div class="name">${data.userName}</div><div class="text">${data.content}</div></div>`)
}
}
}
/*
*
* 提升用戶體驗(網(wǎng)絡延時):
* 自己發(fā)布的內容立即顯示出來不走網(wǎng)絡
* 對方看到的內容可能會延遲,但是對于對方來說都是即時獲取到的因為他不知道你什么時候發(fā)送出去的
* */
// 發(fā)送聊天內容
$('#socket_send').on('click',function () {
userInfo.isSys=0; // 發(fā)布聊天內容時設置為"非系統(tǒng)消息"
userInfo.content=$('#socket_text').val(); // 獲取聊天內容
$('.phone').append(`<div class="info right"><div class="name">${userInfo.userName}</div><div class="text">${userInfo.content}</div></div>`)
$('#socket_text').val('')
Socket.send(JSON.stringify(userInfo))
})
}
})
</script>
</body>
</html>
WebSocket寫的一個聊天室
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門未辆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兼蜈,“玉大人辐棒,你說我怎么就攤上這事》拢” “怎么了陕截?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我缘屹,道長,這世上最難降的妖魔是什么炊昆? 我笑而不...
- 文/花漫 我一把揭開白布椭懊。 她就那樣靜靜地躺著背犯,像睡著了一般柱锹。 火紅的嫁衣襯著肌膚如雪禁熏。 梳的紋絲不亂的頭發(fā)上瞧毙,一...
- 文/蒼蘭香墨 我猛地睜開眼屋厘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了季稳?” 一聲冷哼從身側響起擅这,我...
- 正文 年R本政府宣布伐憾,位于F島的核電站,受9級特大地震影響赫模,放射性物質發(fā)生泄漏树肃。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一瀑罗、第九天 我趴在偏房一處隱蔽的房頂上張望胸嘴。 院中可真熱鬧雏掠,春花似錦、人聲如沸劣像。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽驾讲。三九已至蚊伞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吮铭,已是汗流浹背时迫。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 成長記錄-連載(三十六) ——我的第一篇五千字長文聂使,說了什么,你一定想不到 并不是不想每天寫公眾號谬俄,而是之前思考怎...
- 摘自PM圈子 項目:好比一輛馬車。 項目經(jīng)理:好比是一位經(jīng)驗豐富的馬車夫钥勋。 項目管理:馬車夫駕馭一架套著三匹馬的馬...
- 國慶長假歸來捍靠,上班族最不想做的一件事情肯定是起床上班了沐旨,我也不例外,盡管早早開始調整到工作狀態(tài)榨婆,可是今早上的一場秋...