SpringBoot是使用socket註解式
阿新 • • 發佈:2019-02-10
var ws = null;
var url = null;
var transports = [];
function setConnected(connected) {
document.getElementById('connect').disabled = connected;
document.getElementById('disconnect').disabled = !connected;
document.getElementById('echo').disabled = !connected;
}
//修改url,提供了兩種url一種是wbsocket的一種是sockjs的
function updateUrl(urlPath) {
//如果連結中有sockjs欄位就讓連結等於傳進來的本身
if (urlPath.indexOf('sockjs') != -1) {
url = urlPath;
}
else {
if (window.location.protocol == 'http:') {
url = 'ws://' + window.location.host + urlPath;
} else {
url = 'wss://' + window.location.host + urlPath;
}
}
}
//連結握手
function connect() {
if (!url) {
alert('選擇一個url');
return;
}
//判斷連結中是否有sockjs,如果有使用sockjs的方式拼連結,如果沒有傳送ws連結
if(url.indexOf('sockjs') != -1){
//new SockJS(url, _reserved, options);預設三個引數,中間的基本不用,最後一個是sockjs提供的傳輸功能,引數是陣列(預設是全部開啟)
ws =new SockJS(url);
}else{
ws= new WebSocket(url);
}
//開啟連結
ws.onopen = function () {
setConnected(true);
log('訊息: 連結已開啟');
};
//獲取訊息
ws.onmessage = function (event) {
//呼叫下面的現實資訊的方法
log('推送的訊息: ' + event.data);
};
//關閉連結
ws.onclose = function (event) {
setConnected(false);
//呼叫下面的現實資訊的方法
log('訊息: 連結已關閉');
log(event);
};
}
//傳送訊息
function echo() {
if (ws != null) {
//獲取到輸入框中的訊息
var message = document.getElementById('message').value;
//呼叫下面的現實資訊的方法
log('傳送: ' + message);
ws.send(message);
} else {
alert('訊息沒有連結地址,請重新連線');
}
}
//將傳輸回來的資訊顯示在右側
function log(message) {
var console = document.getElementById('console');
var p = document.createElement('p');
p.style.wordWrap = 'break-word';
p.appendChild(document.createTextNode(message));
console.appendChild(p);
//防止訊息過長幹div外面去
while (console.childNodes.length > 25) {
console.removeChild(console.firstChild);
}
//console.scrollTop = console.scrollHeight;
}
//關閉連結的時候將ws連結清空
function disconnect() {
if (ws != null) {
ws.close();
ws = null;
}
setConnected(false);
}