鄙人所在公司,主要业务做眼底图象医学量化识别,技术栈包括:
Polling angularJs 通过固定的时间片轮流向 server 发起 http 请求,加载最新的数据,缺点
Pusher,浏览器在特定的通道上注册特定的事件,服务器在特定的通道上面触发特定事件, 从而完成 server 端到 client 端的实时通知,优点
添加 pusher gem
添加配置文件 config/initailizer/pusher.rb
require 'pusher'
Pusher.app_id = '***************'
Pusher.key = '*******************'
Pusher.secret = '*******************'
Pusher.logger = Rails.logger
Pusher.encrypted = true
触发事件通知
Pusher.trigger('channel_name', 'event_name', {
message: 'hello world'
})
下载 angular-pusher.min.js 库
https://github.com/doowb/angular-pusher/blob/master/angular-pusher.min.js
注册事件
//注册pusher事件
var pusher = new Pusher('YOUR_APP_KEY');
var channel = pusher.subscribe('channel_name');
channel.bind("event_name", function(data) {
//更新picUrl,从而主angularJs重新刷新图片
$scope.picUrl += ('?decache=' + new Date().getTime());
});
目前业务系统和算法系统,是两个独立部署的系统,其中 Matlab 是编译成可执行文件的形式运行 业务系统通知算法系统,都是通过异步写文件的形式,Matlab 从文件中读取指定,并执行相应的 算法,然后业务系统得自己检测结果文件,处理业务逻辑,并上传。
业务系统和算法系统,只能算得上单工通信,算法部分之前研究过用 C++ 语言提供 api 接口给业务系统实现双工, 但该方式没有能够调试成功,论坛里面是否有人之前做过用 Matlab 提供 REST API 接口这方面的研究, 如果有的,请给出您宝贵的建议或者 demo,谢谢
####参考文献
https://blog.pusher.com/making-angular-js-realtime-with-pusher/ https://pusher.com/tutorials/realtime-notifications