首页/新闻资讯/正文详情

RabbitMQ Web STOMP Examples 插件实战指南:端口 15670 上的浏览器消息演示套件

发布时间:2026/9/23 1:38:57 来源:云帆数科 栏目:资讯中心
RabbitMQ Web STOMP Examples 插件实战指南:端口 15670 上的浏览器消息演示套件
RabbitMQ Web STOMP Examples 插件实战指南端口 15670 上的浏览器消息演示套件【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-server本指南围绕 rabbitmq-server 仓库中的deps/rabbitmq_web_stomp_examples插件展开。它是一个随 RabbitMQ 官方发行版一起内置的Web STOMP 演示应用插件启动后会在 15670 端口上托管一组静态 HTML 页面通过浏览器即可体验基于 WebSocket 的 STOMP 发布/订阅、临时队列reply-to应答等核心用法。读完本文你将掌握该插件的启用方法、三个官方示例Echo Server、Bunny Drawing、Temporary Queue的工作原理以及它们与 rabbitmq_web_stomp 插件、rabbit_web_dispatch静态资源托管机制的对应关系。插件是什么随发行版内置的浏览器端演示套件RabbitMQ Web STOMP Examplesrabbitmq_web_stomp_examples是一个轻量级插件定位是RabbitMQ Web STOMP 插件的使用示例集合。它本身不实现任何新的协议能力而是复用rabbitmq_web_stomp提供的 STOMP-over-WebSocket 端点在插件自己的 HTTP 监听端口上提供几个可直接打开的 HTML 演示页。该插件位于仓库的 deps/rabbitmq_web_stomp_examples 目录包含的静态资源全部位于 priv 目录 下资源文件作用index.html示例入口页罗列三个演示的导航链接echo.htmlSimple Echo Server发布/订阅回显示例bunny.htmlBunny Drawing多人协作画板示例temp-queue.htmlTemporary Queue临时队列 reply-to应答示例stomp.jsstomp-websocket 客户端库CoffeeScript 1.7.1 编译产物Apache License V2.0main.css页面公共样式bunny.png/pencil.cur画板示例的背景图与画笔光标插件通过rabbit_web_dispatch注册一个静态资源上下文来托管这些文件详见下文静态托管如何工作一节。示例页中的浏览器脚本通过ws://host:15674/ws连接到rabbitmq_web_stomp插件的 WebSocket 端点STOMP 帧的编解码由页面加载的stomp.js负责——注意 15674 是rabbitmq_web_stomp插件的默认端口与 15670 的示例页面端口是两个不同的端口。安装与启用该插件随 RabbitMQ 发行版内置无需单独下载。启用它需要使用 RabbitMQ 的 CLI 工具即rabbitmq-plugins原文档给出的命令如下rabbitmq-plugins enable rabbitmq_web_stomp_examples实际使用时由于rabbitmq_web_stomp_examples依赖rabbitmq_web_stomp同时启用两者更符合典型的演示场景# 可能需要 sudo 权限 rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_web_stomp_examples启用后插件会启动自己的监听器绑定到15670 端口并托管若干静态 HTML 文件直接在浏览器打开 http://127.0.0.1:15670 即可看到示例首页。也可以执行rabbitmq-plugins list查看插件启用状态或使用rabbitmq-plugins disable rabbitmq_web_stomp_examples关闭。端口与依赖从构建配置看插件运行机制插件的端口行为在构建配置中定义见 deps/rabbitmq_web_stomp_examples/MakefilePROJECT rabbitmq_web_stomp_examples PROJECT_DESCRIPTION Rabbit WEB-STOMP - examples PROJECT_MOD rabbit_web_stomp_examples_app define PROJECT_ENV [ {listener, [{port, 15670}]} ] endef DEPS rabbit_common rabbit rabbitmq_web_dispatch rabbitmq_web_stomp这里有三个关键信息默认监听端口 15670通过PROJECT_ENV中{listener, [{port, 15670}]}定义这也是原文档所述服务器绑定 15670 端口的配置出处。该端口可在 RabbitMQ 的rabbitmq.conf中通过web_stomp_examples.listener.port调整模块名rabbit_web_stomp_examples_app对应应用回调模块即 src/rabbit_web_stomp_examples_app.erl依赖链rabbitmq_web_stomp_examples依赖rabbitmq_web_dispatch静态资源托管和rabbitmq_web_stompSTOMP-over-WebSocket 服务向下还有rabbit_common与rabbit两个基础库。启用插件时依赖会自动解析。静态托管如何工作应用回调源码解读rabbit_web_stomp_examples_app是一个同时实现application与supervisor行为的模块核心逻辑在start/2中start(_Type, _StartArgs) - {ok, Listener} application:get_env(rabbitmq_web_stomp_examples, listener), {ok, _} rabbit_web_dispatch:register_static_context( web_stomp_examples, Listener, web-stomp-examples, ?MODULE, priv, WEB-STOMP: examples), supervisor:start_link({local, ?MODULE}, ?MODULE, []).其工作流程为读取监听配置通过application:get_env(rabbitmq_web_stomp_examples, listener)取出Makefile中PROJECT_ENV定义的监听器配置默认[{port, 15670}]注册静态上下文调用rabbit_web_dispatch:register_static_context/6注册名为web_stomp_examples的上下文监听端口 15670路径前缀为web-stomp-examples静态文件目录指向本插件的priv目录——这就是 15670 端口能直接以 HTTP 形式服务index.html、echo.html等文件的底层机制启动占位 supervisor最后以supervisor:start_link启动一个空的one_for_one监督树源码注释引用 Erlang 邮件列表的讨论说明这是一个占位 supervisor真正的业务逻辑在rabbit_web_dispatch的监听进程里。对应的stop/1通过rabbit_web_dispatch:unregister_context(web_stomp_examples)注销静态上下文。整个插件因此非常轻量——它不自己打开 Socket只负责把priv里的静态页面挂到 HTTP 监听器上。三个官方示例的完整剖析示例首页 index.html 提供三个入口链接。三个页面共享同一套 HTML 骨架#first展示区 #second日志区分别演示 STOMP 的不同能力。Simple Echo Server/topic/test上的发布/订阅回显页面 echo.html 实现我发我收的回显。核心脚本逻辑// Stomp.js boilerplate const wsProtocol location.protocol https: ? wss: : ws:; var client Stomp.client(wsProtocol // window.location.hostname :15674/ws); client.debug pipe(#second); var print_first pipe(#first, function(data) { client.send(/topic/test, {content-type:text/plain}, data); }); var on_connect function(x) { id client.subscribe(/topic/test, function(d) { print_first(d.body); }); }; var on_error function() { console.log(error); }; client.connect(guest, guest, on_connect, on_error, /);要点页面通过ws://hostname:15674/ws建立 WebSocket 连接与示例页面自身的 15670 端口无关登录使用guest/guest凭据默认虚拟主机/。注意RabbitMQ 默认配置下guest用户仅允许通过localhost回环地址连接远程访问需要另行配置用户或调整权限订阅主题subscriber与发送目标destination都是/topic/test输入框内容经client.send发布到 topic同一浏览器或任何订阅该主题的客户端从订阅回调中收到消息并显示在#first区域client.debug pipe(#second)将 STOMP 客户端库的调试输出收发帧等渲染到#second日志区方便观察协议交互location.protocol https: ? wss: : ws:自动适配 HTTP/HTTPS使用 HTTPS 站点时自动切换为 WSS。Bunny Drawing/topic/bunny上的多人实时画板页面 bunny.html 演示的是最有传播性的场景——多浏览器实时协同。页面加载一张 bunny.png 兔子图片作为画布背景用户用铅笔光标pencil.cur在兔子上绘制线条send function(data) { client.send(/topic/bunny, {}, data); };本地绘制监听mousemove当位移超过阈值两点间距平方根大于 8时生成线段{x1, y1, x2, y2}先调用draw(p)画到本地canvas再send(JSON.stringify(p))把线段 JSON 发布到/topic/bunny远端同步订阅/topic/bunny的每个客户端在回调里JSON.parse(d.body)还原线段并立即绘制于是多开一个浏览器就能看到两个窗口同时在兔子上画画——页面提示语 Draw wings on the bunny! 与 (For more fun open a second browser) 正是为此设计历史重放本地数组lines保存所有已画线段窗口resize时通过do_resize重绘全部历史线条确保缩放不会丢内容浏览区脚本同时把 STOMP 调试输出转发到console.log便于在开发者工具中观察收发帧。/topic/bunny是一个持久化的 topic 交换机上的路由键任意数量的 WebSocket 客户端订阅同一目的地即可实现一对多广播——这正是 RabbitMQ STOMP 插件将 STOMP 目的地映射到交换机/队列的体现。Temporary Queuereply-to 临时队列实现请求-应答页面 temp-queue.html 演示 STOMP 请求-应答模式。页面自带说明When you type text in the forms input, the application will send a message to the/queue/testdestination with thereply-toheader set to/temp-queue/foo.实现分为三段1建立连接并设置默认收件回调临时队列的消息没有显式订阅靠onreceive兜底接收var ws new WebSocket(ws:// window.location.hostname :15674/ws); var client Stomp.over(ws); // default receive callback to get message from temporary queues client.onreceive function(m) { $(#first div).append($(code).text(m.body)); }2订阅/queue/test并在回调中应答收到消息后把正文反转再发回消息头reply-to指向的临时队列var on_connect function(x) { id client.subscribe(/queue/test, function(m) { var reversedText m.body.split().reverse().join(); client.send(m.headers[reply-to], {content-type:text/plain}, reversedText); }); }; client.connect(guest, guest, on_connect, on_error, /);3发送请求表单提交时向/queue/test发送消息并携带reply-to: /temp-queue/foo头$(#first form).submit(function() { var text $(#first form input).val(); if (text) { client.send(/queue/test, {reply-to: /temp-queue/foo}, text); $(#first form input).val(); } return false; });完整数据流输入文本 → 携带reply-to/temp-queue/foo发送到/queue/test→/queue/test的订阅回调收到消息 → 反转正文 → 向reply-to指定的临时队列发回应答 → 默认onreceive回调收到应答并显示。请求、应答两条消息的路径互不阻塞形成完整的 STOMP 请求-应答闭环。与 rabbitmq_web_stomp 插件的关系Web STOMP Examples 本身不实现协议协议能力全部来自 rabbitmq_web_stomp 插件。其应用模块 src/rabbit_web_stomp_app.erl 中可以看到真正的 STOMP-over-WebSocket 服务启动逻辑初始化监听器rabbit_web_stomp_listener:init()、启动事件处理rabbit_web_stomp_internal_event_handler与监督树rabbit_web_stomp_sup。两个插件各司其职端口分工清晰插件端口职责rabbitmq_web_stomp15674默认提供ws://host:15674/wsWebSocket 端点完成 STOMP 帧与 AMQP 交换/队列的映射rabbitmq_web_stomp_examples15670默认托管静态 HTML 演示页页面脚本通过 15674 端口与 STOMP 端点通信因此要完整运行示例务必同时启用rabbitmq_web_stomp与rabbitmq_web_stomp_examples若只启用后者页面可以打开但无法建立 STOMP 连接。常见问题与排障要点浏览器打开 15670 无响应确认rabbitmq_web_stomp_examples已启用且 RabbitMQ 正在运行执行rabbitmq-plugins list检查状态页面能打开但消息收发失败确认rabbitmq_web_stomp已启用rabbitmq-plugins enable rabbitmq_web_stomp并检查 15674 端口监听是否正常示例页的 WebSocket 地址默认指向window.location.hostname:15674如果浏览器与服务器非同机或存在防火墙需要确认该端口可达guest用户无法连接RabbitMQ 默认仅允许guest通过localhost访问跨主机访问时需创建带权限的用户或在配置中显式开放需知晓相应的安全风险;修改端口通过 RabbitMQ 配置项web_stomp_examples.listener.port调整 15670 示例端口通过web_stomp.listener.port调整 15674 STOMP 端口。参考资源示例插件目录deps/rabbitmq_web_stomp_examples示例入口页priv/index.htmlEcho Server 示例priv/echo.htmlBunny Drawing 示例priv/bunny.htmlTemporary Queue 示例priv/temp-queue.html应用回调模块src/rabbit_web_stomp_examples_app.erlSTOMP 客户端库priv/stomp.jsWeb STOMP 插件说明deps/rabbitmq_web_stomp/README.mdWeb STOMP 应用模块deps/rabbitmq_web_stomp/src/rabbit_web_stomp_app.erl【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

PHP-CS-Fixer 的 native_type_declaration_casing 规则:原生类型声明大小写规范化实战指南
PHP-CS-Fixer 的 native_type_declaration_casing 规则:原生类型声明大小写规范化实战指南

开发工具代码质量静态分析Lint格式化 【免费下载链接】PHP-CS-Fixer A tool to automatically fix PHP Coding Standards issues 项目地址: https://gitcode.com/gh_mirrors/ph/PHP-CS-Fixer 点击查看 免费下载 本文围绕 PHP-CS-Fixer 中的 native_type_declaratio… · 2026/9/23 1:38:51

OpenReplay Spot 浏览器扩展开发与构建指南:从 `yarn dev` 本地调试到 Chrome MV3 打包发布
OpenReplay Spot 浏览器扩展开发与构建指南:从 `yarn dev` 本地调试到 Chrome MV3 打包发布

可观测性开发工具前端后端 【免费下载链接】openreplay Session replay, cobrowsing and product analytics you can self-host. Best for reproducing issues and iterating on your product. 项目地址: https://gitcode.com/gh_mirrors/op/openreplay 点击查看 免… · 2026/9/23 1:38:51

AutoClip 前端合集拖拽排序失效排查实战:从 react-beautiful-dnd 到后端 PATCH 的完整调用链调试指南
AutoClip 前端合集拖拽排序失效排查实战:从 react-beautiful-dnd 到后端 PATCH 的完整调用链调试指南

AutoClip 前端合集拖拽排序失效排查实战:从 react-beautiful-dnd 到后端 PATCH 的完整调用链调试指南 【免费下载链接】autoclip AutoClip : AI-powered video clipping and highlight generation 一款智能高光提取与剪辑的二创工具 项目地址: https://gitcode.c… · 2026/9/23 1:38:51

嗜黏蛋白阿克曼菌的工程化应用与产业化前景
嗜黏蛋白阿克曼菌的工程化应用与产业化前景

1. 产业背景与菌种特性解析嗜黏蛋白阿克曼菌(Akkermansia muciniphila)作为一种专性厌氧的革兰氏阴性菌,近年来在微生物组研究中脱颖而出。这种定植于肠道黏液层的"黏膜型菌",其独特之处在于能够将宿主分泌的黏蛋白作为… · 2026/9/23 9:01:02

2026最新搞懂什么是牛市:3分钟避开90%散户坑
2026最新搞懂什么是牛市:3分钟避开90%散户坑

2026最新搞懂什么是牛市:3分钟避开90%散户坑 别再被那些几十页的官方文档和晦涩术语绕晕了。很多人翻开《证券法》或交易所公告,看着“上涨趋势”、“多头排列”这些词,脑子瞬间一片浆糊,根本抓不住重点。… · 2026/9/23 9:01:02

AR空间定位精度测试框架设计与工业应用实践
AR空间定位精度测试框架设计与工业应用实践

1. 项目背景与核心价值去年参与某工业AR项目时,我们团队曾遇到一个棘手问题:当技术员戴着AR眼镜试图将虚拟操作指引叠加到真实设备上时,指引位置总会产生5-8cm的偏移。这种精度误差直接导致装配工序出错率上升40%,最终迫使我们暂停… · 2026/9/23 9:01:02

机器学习频谱感知实战:从特征提取到模型部署的完整指南
机器学习频谱感知实战:从特征提取到模型部署的完整指南

简介:本资源为基于机器学习的认知无线电频谱感知MATLAB仿真资料包,面向计算机、电子信息工程、数学等专业的大学生,适用于课程设计、期末大作业与毕业设计场景。包内共22个文件,以csv数据集、ipynb交互式代码、py脚本、pdf报告与m… · 2026/9/23 9:00:54

从 RJ45 到云端:以太网温湿度变送器通过 TCP/IP 上云,同时暴露 SNMP 与 UDP 服务的安全策略近期在调试一套工业环境监控系统时,遇到了关于 Modbus 连接保持的问题。现场部署了
从 RJ45 到云端:以太网温湿度变送器通过 TCP/IP 上云,同时暴露 SNMP 与 UDP 服务的安全策略近期在调试一套工业环境监控系统时,遇到了关于 Modbus 连接保持的问题。现场部署了

从 RJ45 到云端:以太网温湿度变送器通过 TCP/IP 上云,同时暴露 SNMP 与 UDP 服务的安全策略近期在调试一套工业环境监控系统时,遇到了关于 Modbus 连接保持的问题。现场部署了一批 恒湿净化设备(包括 恒湿消毒净化一体机 等&#… · 2026/9/23 9:00:54

5分钟搞定波浪理论口诀2026最新源码实战
5分钟搞定波浪理论口诀2026最新源码实战

5分钟搞定波浪理论口诀2026最新源码实战 官方文档翻了三遍还是抓不住重点,别慌。很多开发者在面对复杂逻辑时,总觉得官方文档太长、太晦涩,导致上手极慢。 其实,核心痛点不在文档,而在缺乏可执行的代码骨架。今天分享一套 2026最新… · 2026/9/23 9:00:54

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码