我们目前在使用workerman做一些物联网的数据平台,在使用过程中,需要和其他平台进行数据的对接,遇到两个问题: 1、目前很多的平台采用api接口的方式,需要我们去下载数据过来,大部分可以通过http的方式下载,用了http-client感觉不错,可以满足,感觉少一个定时的设置 2、有些是提供了ws或者其他tcp的接口,因此有没有计划推出一些其他类型的client的计划? 最好是可以同时创建多个这样的连接,防止一个有问题,其他的可以替补。
找到解决方案了,http://doc3.workerman.net/315174 结贴
1、workerman支持定时器,可以定时做一些你需要的操作,具体参考workerman手册 2、workerman有提供AsyncTcpConnection类,可以让workerman作为客户端发起异步ws或者tcp连接,具体参考workerman手册
已经开始做了,但是遇到一个问题,我用指定本地Ip和端口的方式,异步的方式访问了服务器(调试模式),然后我关闭了程序,这个端口一直被占用,再次打开就有问题,怎么处理?
截图代码和报错吧
代码如图: 错误如图: 对方用的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"); }; });
报错的时候netstat -nt | grep 8088 应该是端口没被释放,被time_wait占用了
是的,现在释放了,但是似乎 得不到数据!
在浏览器里试下吧,估计这个地址连不上
ws = new WebSocket('ws://123.31.217.23:8088'); 浏览器里测试,地址能连上才行
例子里他们用的是 SockJS 连接的,我理解不是标准的ws协议?
我尝试了一个浏览器可以连接的ws服务器,但是用异步tcp 可以连接上,但是没有收到数据过来!
浏览器里测试这个地址ws://123.31.217.23:8088是连不上的,超时。另外即使连上,服务端得发来数据才能收到数据
$(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的接口?您也帮我看一下
之前端口写错了
不清楚这里的stomp是什么,另外这个SockJS连接的地址不一定是原生ws,不一定能连上
查了 很多资料 ,发现应该是 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一下
要是别的平台调用你得接口送数据过来,这个数据怎么传到workerman里面呢?
找到解决方案了,http://doc3.workerman.net/315174 结贴
1、workerman支持定时器,可以定时做一些你需要的操作,具体参考workerman手册
2、workerman有提供AsyncTcpConnection类,可以让workerman作为客户端发起异步ws或者tcp连接,具体参考workerman手册
已经开始做了,但是遇到一个问题,我用指定本地Ip和端口的方式,异步的方式访问了服务器(调试模式),然后我关闭了程序,这个端口一直被占用,再次打开就有问题,怎么处理?
截图代码和报错吧
代码如图:
错误如图:
对方用的sockjs 做的ws服务
网页访问的例子是这样访问的:
报错的时候netstat -nt | grep 8088
应该是端口没被释放,被time_wait占用了
是的,现在释放了,但是似乎 得不到数据!
在浏览器里试下吧,估计这个地址连不上
ws = new WebSocket('ws://123.31.217.23:8088'); 浏览器里测试,地址能连上才行
例子里他们用的是 SockJS 连接的,我理解不是标准的ws协议?
我尝试了一个浏览器可以连接的ws服务器,但是用异步tcp 可以连接上,但是没有收到数据过来!
浏览器里测试这个地址ws://123.31.217.23:8088是连不上的,超时。另外即使连上,服务端得发来数据才能收到数据
$(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的接口?您也帮我看一下
之前端口写错了
不清楚这里的stomp是什么,另外这个SockJS连接的地址不一定是原生ws,不一定能连上
查了 很多资料 ,发现应该是
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一下
要是别的平台调用你得接口送数据过来,这个数据怎么传到workerman里面呢?