WebSocket :一种通信协议 ,其作用建立一个连接通道,使数据交互从传统的请求响应的方式 改为了实时的双向推送 ,解决了 http 协议的部分不足
这里就直接整合了spring boot,spring boot 太香了
客户端1
<!DOCTYPE html> <html> <head lang="zh"> <meta charset="utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Demo Chat</title> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.js"></script> <!--moment js下载地址:http://momentjs.com/ --> <script src="moment.js"></script> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <style> body {padding: 20px;} #console {height: 400px;overflow: auto;} .username-msg {color: orange;} .connect-msg {color: green;}.disconnect-msg {color: red;}.send-msg {color: #888} </style> <script> var clientId = 'user1',targetId = 'user2'; var socket = io.connect('http://localhost:8081?clientid=' + clientId); socket.on('connect', function () { showMsg('<span class="connect-msg">成功连接到服务器!</span>'); }); socket.on('message_event', function (data) { showMsg('<br /><span class="username-msg">' + new Date().getHours()+' '+new Date().getMinutes()+' '+new Date().getSeconds()+ '</span> ' + data); }); socket.on('disconnect', function () { showMsg('<span class="disconnect-msg">服务已断开!</span>'); }); function sendDisconnect() { socket.disconnect(); } function sendMessage() { var message = $('#msg').val(); $('#msg').val(''); var jsonObject = { sourceClientId: clientId, targetClientId: targetId, msg: message }; socket.emit('message_event', jsonObject); } function showMsg(message) { // alert(message) // var currentTime = "<span class='time'>" + moment().startOf('hour').fromNow() + "</span>"; // var element = $("<div>" + currentTime + "" + message + "</div>"); $('#console').append(message); } $(document).keydown(function (e) { if (e.keyCode == 13) { $('#send').click(); } }); </script> </head> <body> <h1>Netty-socket.io Demo</h1><br/> <div id="console" class="well"></div> <form class="well form-inline" onsubmit="return false;"> <input id="msg" class="input-xlarge" type="text" placeholder="Type something..."/> <button type="button" onClick="sendMessage()" class="btn" id="send">Send</button> <button type="button" onClick="sendDisconnect()" class="btn">Disconnect</button> </form> </body> </html>客户端2
<!DOCTYPE html> <html> <head lang="zh"> <meta charset="utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Demo Chat</title> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.js"></script> <!--moment js下载地址:http://momentjs.com/ --> <script src="moment.js"></script> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <style> body {padding: 20px;} #console {height: 400px;overflow: auto;} .username-msg {color: orange;} .connect-msg {color: green;}.disconnect-msg {color: red;}.send-msg {color: #888} </style> <script> var clientId = 'user2',targetId = 'user1'; var socket = io.connect('http://localhost:8081?clientid=' + clientId); socket.on('connect', function () { showMsg('<span class="connect-msg">成功连接到服务器!</span>'); }); socket.on('message_event', function (data) { showMsg('<br /><span class="username-msg">' + new Date().getHours()+' '+new Date().getMinutes()+' '+new Date().getSeconds()+ '</span> ' + data); }); socket.on('disconnect', function () { showMsg('<span class="disconnect-msg">服务已断开!</span>'); }); function sendDisconnect() { socket.disconnect(); } function sendMessage() { var message = $('#msg').val(); $('#msg').val(''); var jsonObject = { sourceClientId: clientId, targetClientId: targetId, msg: message }; socket.emit('message_event', jsonObject); } function showMsg(message) { // alert(message) // var currentTime = "<span class='time'>" + moment().startOf('hour').fromNow() + "</span>"; // var element = $("<div>" + currentTime + "" + message + "</div>"); $('#console').append(message); } $(document).keydown(function (e) { if (e.keyCode == 13) { $('#send').click(); } }); </script> </head> <body> <h1>Netty-socket.io Demo</h1><br/> <div id="console" class="well"></div> <form class="well form-inline" onsubmit="return false;"> <input id="msg" class="input-xlarge" type="text" placeholder="Type something..."/> <button type="button" onClick="sendMessage()" class="btn" id="send">Send</button> <button type="button" onClick="sendDisconnect()" class="btn">Disconnect</button> </form> </body> </html>同时启动这个两个就能进行聊天了