wamp 推送/订阅消息讲解

wamp官网:http://wamp-proto.org/

crossbar官网:https://crossbar.io/

1、wamp是什么?我们的项目中为什么要使用wamp?

webSocket:双向数据传输协议,服务器可以主动向客户端发送消息,WebSocket是基于Http协议的。

以前服务端想往客户端发送消息(两种方式)

ajax轮询

让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息(需要处理速度快)。

long poll

客户端发起连接后,如果没消息,就一直不返回Response给客户端(服务挂起,阻塞了,需要多并发)。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。

wamp和websocket关系

WAMP易于使用,易于实现,并基于现代Web标准:WebSocket,JSON和URI。

WAMP是一种开放标准的WebSocket子协议,在一个统一协议中提供两种应用程序消息传递模式:

远程过程调用(RPC)+发布和订阅(Publish & Subscribe)。

WebSocket是相当低级的,只提供原始消息。 WAMP将RPC和PubSub的更高级别的消息传递模式添加到WebSocket中。

在技术上,WAMP是使用JSON作为消息序列化格式的正式注册的WebSocket子协议(运行在WebSocket之上)。

虽然具有JSON序列化的WAMP-over-WebSocket是WAMP的首选传输,但协议也可以使用MsgPack作为序列化运行,运行在原始TCP或通常基于任何基于消息的双向可靠传输。

wamp跨语言性

WAMP在使用不同语言的开放WebSocket协议中提供统一的应用程序路由。可以使用JavaScript编写前端,在浏览器中运行,可以使用Python或Java编写后端。可以相互传输数据。

问题2解决、1、服务端需要向客户端推送消息;2、wamp的跨语言性;3、wamp模型比传统模型更好

wamp模型对比:

传统模型:客户端-服务器模型

在客户端 - 服务器模型中,客户端需要知道服务端所在的位置以及如何访问它。 这引起了客户端和服务端之间的强耦合。 应用程序容易变得复杂和不可维护。

wamp模型:客户端-中间人-客户端模型;

客户端只需要知道中间人的url,也就是crossbar服务的地址,这个url始终不会改变。数据交互通过两个人定义主题实现

crossbar.io(用python写的一个router)

Crossbar.io是用于分布式和微型服务应用程序的开源网络平台。 它实现了开放的Web应用程序消息传递协议(WAMP),功能丰富,可扩展,强大而安全。 让Crossbar.io照顾消息传递的重要部分,以便您可以专注于应用程序的功能。

WAMP客户端库可用于15种语言,可以将任何东西连接到Crossbar.io。

使用Crossbar.io,您可以在同一应用程序中混合使用不同语言编写的组件。

总结:

WebSocket是基于Http协议的,wamp协议目前基于websocket协议,crossbar是对wamp协议的实现。

两种crossbar部署方式(官方)

1、docker虚拟化工具

docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离

2、部署源代码(https://crossbar.io/docs/Installation-on-Linux/)

(unbuntu或者debian)

//准备工作
sudo apt-get update
sudo apt-get -y dist-upgrade
sudo apt-get -y install build-essential libssl-dev libffi-dev libreadline-dev libbz2-dev libsqlite3-dev libncurses5-dev//安装cPython
cd $HOME
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar xvf Python-2.7.13.tar.xz
cd Python-2.7.13
./configure --prefix=$HOME/python2713
make
make install//安装pip(安装python包的工具)
~/python2713/bin/python -m ensurepip
~/python2713/bin/python -m pip install -U pip
//使用pip安装crossbar
~/python2713/bin/pip install crossbar
//查看crossbar版本
~/python2713/bin/crossbar version

~/python2713/bin/crossbar init
之后找到,<.crossbar/config.json>配置config.json

~/python2713/bin/crossbar start --cbdir /home/.crossbar &

wamp使用(angular-wamp)

angular-wamp插件github:https://github.com/voryx/angular-wamp

//连接服务 app.config(function ($wampProvider) {        $wampProvider.init({                 url: 'ws://ip:port/ws',//服务端Ip            realm: 'realm1'//认证信息        });    });

发布-订阅
服务器可以向前端推送消息

//A订阅消息$wamp.subscribe('message', onevent);//订阅信息function onevent(data) {if(data){console.log('收到新消息',JSON.stringify(data));}else {console.log('失败');}}
//B推送消息setInterval(publish,1000);//推送消息function publish() {console.log('我一直在推送消息');$wamp.publish('message', ['Hello, world!']);}

远程调用rpc
A和B分别是两个服务,在A注册了add2函数,在B可以调用

    //服务端A$wamp.register('com.myapp.add2', add2);function add2(args) {return args[0] + args[1];}
//服务端B
$wamp.call('com.myapp.add2', [2, 3]).then(function (res) {$scope.add2 = res;console.log(res)});      

wamp介绍及crossbar.io服务搭建相关推荐

  1. Linux教程:RocketMq介绍以及集群服务搭建(双主双从同步双写)并安装可视化平台RocketMq-Dashboard

    一.介绍 1.什么是MQ MQ(Message Queue)消息队列,是基础数据结构中"先进先出"的一种数据结构.一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用 ...

  2. echo 多行_分享laravel-echo-server广播服务搭建-Laravel

    下面由Laravel教程栏目给大家介绍laravel-echo-server广播服务搭建,希望对需要的朋友有所帮助! 动机 当前项目中很多场景采用 Redis 队列和定时任务来处理执行时间较长的任务, ...

  3. Kitty-Cloud服务搭建过程剖析

    项目地址 https://github.com/yinjihuan/kitty-cloud[1] 服务搭建 大家目前看到的都是我已经搭建好了的服务,如果让你从零开始自己搭建一个微服务的项目,要怎么做? ...

  4. [实训题目EmoProfo]基于深度学习的表情识别服务搭建(一)

    基于深度学习的表情识别服务搭建(一) 文章目录 基于深度学习的表情识别服务搭建(一) 背景 识别服务设计 实现方式的选择 dlib性能验证 功能实现 小结 背景 之前我完成了终端和服务端之间交流的全部 ...

  5. 分布式系统(三) 分布式事务服务搭建

    分布式系统(三)分布式事务服务搭建(入门) 接着前面说的分布式事务,本章节是用来记录分布式事务的服务的一个搭建过程 1.微服务环境准备 服务注册配置中心:nacos 服务调用和负载均衡:OpenFei ...

  6. PaaS 以及全套服务微服务搭建流程

    这是一篇写的很早的文章,所以有个别内容没那么新,涵盖的内容非常的全,内容太多,可以用于参考. 主要流程分为: Rancher PaaS 平台 MySQL 安装.配置.数据导入 RabbitMQ 安装. ...

  7. yum源及yum仓库服务搭建讲解

    说明:本文来自老男孩linux运维实战培训-高级架构师班学生分享内容 人人都是讲师-学生分享-yum源及yum仓库服务搭建讲解(郑同学,向潘同学点评,老男孩点评) 第一次观看本视频前,建议博友先观看: ...

  8. (十五)Java springcloud B2B2C o2o多用户商城 springcloud架构-commonservice-sso服务搭建(一)...

    2019独角兽企业重金招聘Python工程师标准>>> 前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行 ...

  9. (十一)java版spring cloud+spring boot+redis多租户社交电子商务平台- commonservice-sso服务搭建(一)...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservi ...

最新文章

  1. 他为何能够领跑互联网与AI时代?李彦宏讲述成功之道
  2. DAY4-打卡第四天-2018-1-12
  3. 【Python】5个方便好用的Python自动化脚本
  4. 回溯时间是什么意思_《凡人修仙之仙界篇》分析时间法则的不同体现形式
  5. 关于swiper的tab(选项卡)中设置了autoHeight没有效果解决
  6. Python打包方法基本应用方式介绍
  7. psql: FATAL the database system is in recovery解决
  8. 【Android】6.3 ProgressDialog
  9. 补天五星计划范围更新,还有单个漏洞额外10000元现金奖励?!
  10. 2012 国庆中秋黄金周流水帐
  11. Android常用抓包工具—Charls(青花瓷)
  12. java中jdbc查询有返回值_使用JdbcTemplate查询方法的返回值 | 学步园
  13. c++头文件中的防卫式声明
  14. u3d android 优化
  15. kali工具熟悉——情报分析
  16. css复选框表单,用CSS来美化表单——复选按钮篇
  17. Python实现选择排序算法
  18. 八、Docker Swarm
  19. php twig中文手册,安装 · Twig 中文文档 · 看云
  20. 大数据培训课程之Flume拓扑结构大数据培训课程之Flume拓扑结构

热门文章

  1. Esp8266(WIFI模块)刷阿里云固件
  2. MATLAB等额还款代码,matlab算法实现对等额本息和等额本金两种还款方式的计算
  3. 转:无损压缩和有损压缩
  4. 【题解】DZY Loves Math
  5. selenium利用cookie跳过验证码登录
  6. 基于群智能算法的函数最值优化问题
  7. 多行文本展开收起(css)
  8. [渝粤教育] 郑州轻工业大学 自动控制原理 参考 资料
  9. EagleEye简介:户外视频监控分析和面部识别软件
  10. i3 7100黑苹果_苹果连发三款新品,售价更低!性能更强!| 数码