同步操作将从 yswift/LearnJava 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<html><head><meta charset="utf-8"/><title>web socket 聊天室</title><link rel="stylesheet" href="bootstrap.css"></head><body><div class="container"><div class="row " style="padding-top:20px;"><h3 class="text-center">websocket 聊天室</h3><div class="col-md-8"><div class="panel panel-info"><div class="panel-heading">聊天内容</div><div id="chat" class="panel-body" style="height: 500px;overflow-y:scroll;"><ul id="chat-content" class="media-list"/></div><div class="panel-footer"><form><div class="input-group"><input type="text" id="msg" class="form-control" placeholder="输入消息" disabled required/><span class="input-group-btn"><input id="btnSend" class="btn btn-info" type="submit" onclick="send(this)"value="发送" disabled/></span></div></form></div></div></div><div class="col-md-4"><div class="panel panel-primary"><div class="panel-heading">在线用户</div><div class="panel-body" style="height: 500px;overflow-y:scroll;"><ul id="users" class="media-list"/></ul></div><div class="panel-footer"><form><div class="input-group"><input type="text" id="nickname" class="form-control" placeholder="昵称" required/><span class="input-group-btn"><input id="btnConnect" type="button" class="btn btn-info" value="连接"onclick="connect(this)"/></span></div></form></div></div></div></div></div><!--接收到消息的显示模板--><div id="receivechat" class="hidden"><li class="media"><div class="media-body"><div class="media"><div class="nickname pull-left">Nick name</div><div class="media-body"><div class="msg"></div><br/><small class="text-muted">Alex Deo | 23rd June at 5:00pm</small><hr/></div></div></div></li></div><!--发送消息的显示模板--><div id="mychat" class="hidden"><li class="media"><div class="media-body"><div class="media"><div class="nickname pull-right">Nick name</div><div class="media-body"><div class="msg"></div><br/><small class="text-muted">Alex Deo | 23rd June at 5:00pm</small><hr/></div></div></div></li></div><!--在线用户模板--><div id="user" class="hidden"><li class="media"><div class="media-body"><div class="media"><div class="media-body"><h5></h5><small class="text-muted"></small></div></div></div></li></div><script src="../static/jquery-3.4.0.min.js"></script><script>var websocket = null;function connect(btn) {// 检查昵称,如果空,显示出错信息var form = $(btn).parents("form")[0];// 验证if (!form.checkValidity()) {// 显示验证结果form.reportValidity();return;}if (btn.value === "连接") {// 连接var url = "ws://" + location.hostname + ":" + location.port + "/websocket";// websocket = new WebSocket("ws://localhost:8080/websocket");websocket = new WebSocket(url);websocket.onopen = onopen;websocket.onclose = onclose;websocket.onmessage = onmessage;} else {// 断开链接if (websocket) {websocket.close();}}}function send(btn) {event.preventDefault();// 检查消息,如果空,显示出错信息var form = $(btn).parents("form")[0];if (!form.checkValidity()) {form.reportValidity();return;}// 获得用户输入var msg = $("#msg").val();if (!msg) {return;}$("#msg").val("");showMyMsg(msg);// 设置消息websocket.send(JSON.stringify({type: "Msg",nickname: $("#nickname").val(),msg: msg}));}function onopen(event) {$("#nickname").attr("readonly", "readonly");$("#btnConnect").val("断开");$("#msg").removeAttr("disabled");$("#btnSend").removeAttr("disabled");// 发送连接消息websocket.send(JSON.stringify({type: "Connection",nickname: $("#nickname").val(),}));}function onclose(event) {var usersnode = $("#users");usersnode.empty();$("#nickname").removeAttr("readonly");$("#btnConnect").val("连接");$("#msg").attr("disabled", "disabled");$("#btnSend").attr("disabled", "disabled");}function onmessage(event) {var data = JSON.parse(event.data);showReceiveMsg(data);showUsers(data.users);}function showMyMsg(msg) {var chatnode = $($("#mychat").html());var nickname = $("#nickname").val();showMsg(chatnode, nickname, msg);}function showReceiveMsg(data) {var chatnode = $($("#receivechat").html());showMsg(chatnode, data.nickname, data.msg);}function showMsg(chatnode, nickname, msg) {chatnode.find(".nickname").text(nickname);chatnode.find(".msg").text(msg);chatnode.find(".text-muted").text(new Date().format("hh:mm:ss"));// 添加到聊天窗口var chatContent = $("#chat-content");chatContent.append(chatnode);// 滚动到底部var chatdiv = document.getElementById('chat');chatdiv.scrollTop = chatdiv.scrollHeight}function showUsers(users) {if (users.length < 1) {return;}var usersnode = $("#users");usersnode.empty();for (var i = 0; i < users.length; i++) {var un = $($("#user").html());un.removeAttr("id");un.removeClass("hidden");un.find("h5").text(users[i]);usersnode.append(un);}}Date.prototype.format = function (fmt) {var o = {"M+": this.getMonth() + 1, //月份"d+": this.getDate(), //日"h+": this.getHours(), //小时"m+": this.getMinutes(), //分"s+": this.getSeconds(), //秒"q+": Math.floor((this.getMonth() + 3) / 3), //季度"S": this.getMilliseconds() //毫秒};if (/(y+)/.test(fmt)) {fmt = fmt.replace(RegExp.1ドル, (this.getFullYear() + "").substr(4 - RegExp.1ドル.length));}for (var k in o) {if (new RegExp("(" + k + ")").test(fmt)) {fmt = fmt.replace(RegExp.1ドル, (RegExp.1ドル.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));}}return fmt;}</script></body></html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。