如何与其他平台实现数据对接

dorke

我们目前在使用workerman做一些物联网的数据平台,在使用过程中,需要和其他平台进行数据的对接,遇到两个问题:
1、目前很多的平台采用api接口的方式,需要我们去下载数据过来,大部分可以通过http的方式下载,用了http-client感觉不错,可以满足,感觉少一个定时的设置
2、有些是提供了ws或者其他tcp的接口,因此有没有计划推出一些其他类型的client的计划? 最好是可以同时创建多个这样的连接,防止一个有问题,其他的可以替补。

阅读 7700
6个回答

dorke

找到解决方案了,http://doc3.workerman.net/315174  结贴

  • 暂无评论
walkor

1、workerman支持定时器,可以定时做一些你需要的操作,具体参考workerman手册
2、workerman有提供AsyncTcpConnection类,可以让workerman作为客户端发起异步ws或者tcp连接,具体参考workerman手册

  • dorke 2018-12-14

    已经开始做了,但是遇到一个问题,我用指定本地Ip和端口的方式,异步的方式访问了服务器(调试模式),然后我关闭了程序,这个端口一直被占用,再次打开就有问题,怎么处理?

  • walkor 2018-12-14

    截图代码和报错吧

dorke

 


 代码如图:
 
 错误如图:
 对方用的sockjs 做的ws服务
 
网页访问的例子是这样访问的:

$(document).ready( function() {
    var sock = new SockJS('http://192.168.30.5:8080/rtls/sockjs');
    var client = Stomp.over(sock);
    client.debug = null;
    client.connect({}, function(frame) {
        console.log("Stomp.sock.connect");
        client.subscribe("/queue/position", function(message) {
            console.log(message.body);
        });
    });
     sock.onclose = function(event) {
        console.log("Stomp.sock.closed");
    };
});
  • 暂无评论
walkor

报错的时候netstat -nt | grep 8088
应该是端口没被释放,被time_wait占用了

  • dorke 2018-12-14

    是的,现在释放了,但是似乎 得不到数据!

  • walkor 2018-12-14

    在浏览器里试下吧,估计这个地址连不上

  • walkor 2018-12-14

    ws = new WebSocket('ws://123.31.217.23:8088'); 浏览器里测试,地址能连上才行

  • dorke 2018-12-14

    例子里他们用的是 SockJS 连接的,我理解不是标准的ws协议?

  • dorke 2018-12-14

    我尝试了一个浏览器可以连接的ws服务器,但是用异步tcp 可以连接上,但是没有收到数据过来!

  • walkor 2018-12-14

    浏览器里测试这个地址ws://123.31.217.23:8088是连不上的,超时。另外即使连上,服务端得发来数据才能收到数据

  • dorke 2018-12-17

    $(document).ready( function() {
    var sock = new SockJS('http://123.31.217.23:8080/rtls/sockjs');
    var client = Stomp.over(sock);
    client.debug = null;
    client.connect({}, function(frame) {
    console.log("Stomp.sock.connect");
    client.subscribe("/queue/position", function(message) {
    console.log(message.body);
    });
    });
    sock.onclose = function(event) {
    console.log("Stomp.sock.closed");
    };
    }); 用页面,这段代码 可以获得到数据,我理解的意思是,还需要stomp的接口?您也帮我看一下

  • dorke 2018-12-17

    之前端口写错了

  • walkor 2018-12-17

    不清楚这里的stomp是什么,另外这个SockJS连接的地址不一定是原生ws,不一定能连上

  • dorke 2018-12-17

    查了 很多资料 ,发现应该是
    stomp over websocket,也就是 基于websocket做 的一个stomp的协议 。https://blog.csdn.net/a617137379/article/details/78765025#stomp-over-websocket%E5%8D%8F%E8%AE%AE%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0 好复杂

布鲁

很受启发, Mark一下

  • 暂无评论
dpdzq

要是别的平台调用你得接口送数据过来,这个数据怎么传到workerman里面呢?

  • 暂无评论