美文网首页Java 杂谈我爱编程
2018-12-24 死亡学习日记

2018-12-24 死亡学习日记

作者: 娶个好听的昵称 | 来源:发表于2018-12-24 17:42 被阅读118次

    好几个小时前,拿到任务分配,实现一个交互。

    任务是这样的:A,B两个页面,都是独立运行展示出来的。

    老大给了我两个思路,我思考后总结为:

    1.A页面点击后,后台改变一个状态码,B页面一定时间循环读取后台对应数据,某一次循环中发现状态码被改变,页面效果显示。

    2.用长链接实现实时交互,就是说A页面点击按钮1后发送数据给B页面,B页面接受数据后展示效果.


    思路1

    现在呢,感脚思路1很好实现,因为是要在钉钉上面做这玩意,然后我打开钉钉开发文档:

    dd.httpRequest

    向指定服务器发起一个跨域 http(s) 请求。

    加一段官方示例代码:

    dd.httpRequest({
      url: 'http://httpbin.org/post',
      method: 'POST',
      data: {
        from: '钉钉',
        production: 'Dingtalk',
      },
      dataType: 'json',
      success: function(res) {
        dd.alert({content: 'success'});
      },
      fail: function(res) {
        dd.alert({content: 'fail'});
      },
      complete: function(res) {
        dd.hideLoading();
        dd.alert({content: 'complete'});
      }
    });
    
    

    A页面用这个改变状态码,B用这个方法获取状态码,但是B要用一个定时循环函数:

    setTimeout(function () {
         //要延时执行的代码
        }, 1000) //延迟时间 这里是1秒
    

    使用递归来决定函数的循环执行。

    赶脚嘞个方法有点不太合适,那就再看看另外的一个思路。


    思路2

    呐,因为是新手,这个长链接是个啥玩意不知道,所以现在一步步慢慢来。
    先去搜索了Java Web 的长连接,说是可以一定时间内一直建立连接,可以交互数据,嗯,看到了个例子说是网页聊天一样,反正没看太懂。就知道了有个WebScoket,但是不会吖。
    然后,又搜索了一下简单demo,找到了一个。效果图如下:

    demo原文地址

    自己跟着实现了一遍,但是并没有多加深入理解,只是稍微改了一下能够实现两个不同的页面完成demo的效果。


    现在先去搜索一下小程序里面的webscoket看看。

    经过一番周折,发现之前看的demo,完全可以套用在钉钉移动端上面,业务逻辑也差不多,基本效果已经可以实现了。


    //ws的JS
    var stompClient = null;
        window.onload=function (){
             var socket = new SockJS('/endpointSang');
             stompClient = Stomp.over(socket);
             stompClient.connect({}, function (frame) {
                 console.log('Connected:' + frame);
                 stompClient.subscribe('/topic/getResponse', function (response) {
                     showResponse(JSON.parse(response.body).responseMessage);
                 })
             });
        }
        function sendName() {
            var name = "小伙子,泥中了5000W,快醒来去领奖";
            console.log('name:' + name);
            stompClient.send("/welcome", {}, JSON.stringify({'name': name}));
        }
    
    //ws2的JS
     var stompClient = null;
        window.onload=function (){
         var socket = new SockJS('/endpointSang');
            stompClient = Stomp.over(socket);
            stompClient.connect({}, function (frame) {
                console.log('Connected:' + frame);
                stompClient.subscribe('/topic/getResponse', function (response) {
                    showResponse(JSON.parse(response.body).responseMessage);
                })
            });
       }
        function disconnect() {
            if (stompClient != null) {
                stompClient.disconnect();
            }
            setConnected(false);
            console.log('Disconnected');
        }
    
        function showResponse(message) {
            alert(message);
        }
    

    今天就差不多了,明天在钉钉上把它弄出来。

    GAME OVER。

    相关文章

      网友评论

        本文标题:2018-12-24 死亡学习日记

        本文链接:https://www.haomeiwen.com/subject/ahlzkqtx.html