最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天观点:使用ActiveMQ Artemis进行重连

来源:博客园


(资料图片仅供参考)

正常创建一个连接,在一段时间后心跳就会因为接收不到数据而强制停止。从而断开连接,那么无论是前端还是后端都应该有自己的实现重连机制。这里写一个关于前端实现重连的机制:

代码如下:

点击查看代码
          Chat Example Using STOMP Over WebSockets                            
        
<script src="js/jquery-1.7.2.min.js"></script> <script src="js/stomp2.3.3.js"></script> <script>//"+content+"

" + "\n");}, {}); }function errorCallback(){//链接失败时的回调函数,此函数从新调用链接方法,造成循环,直到链接成功 connect(); var d = new Date();console.log(d.getDate()+d.getHours()+d.getMinutes()+"执行了重连。。。"); } $(document).ready(function() { if(window.WebSocket) { $("#connect_form").submit(function() { data.set("url",$("#connect_url").val()); data.set("login",$("#connect_login").val()); data.set("passcode",$("#connect_passcode").val()); data.set("id",$("#connect_id").val()); connect();//创建链接 $("#connect").remove(); $("#connected").css("display",""); // this allows to display debug logs directly on the web page //client.debug = function(str) { //$("#messages").append("

" +str.body+ "

" +"\n"); //$("#debug").append(str + "\n"); // }; return false; }); $("#disconnect").click(function() { client.disconnect(function() { $("#connected").fadeOut({ duration: "fast" }); $("#connect").fadeIn(); $("#messages").html("") }); location.reload (); return false; }); $("#send_form").submit(function() { var text = $("#send_form_input").val(); if (text) { client.send("world", {}, text); $("#send_form_input").val(""); } return false; }); } else { $("#connect").html("\

Get a new Web Browser!

\

\ Your browser does not support WebSockets. This example will not work properly.
\ Please use a Web Browser with WebSockets support (WebKit or Google Chrome).\

\ "); } }); //]]></script>

实现原理很简单,使用stomp进行连接,里面定义了连接方法client.connect(headers, connectCallback ,errorCallback );分别是头信息,连接成功回调,和连接失败回调,底层实现的是windows.setinterval()方法进行定时检测连接是否正常。这样服务启动后就会一直有正常的连接支持。遗憾的是这种连接方法并不能使同一个sessionid的连接重连。而是取到我们填写的信息再次连接。

关键词: 回调函数 断开连接 就会一直