网站怎样盗链图片,网站后台上传的照片模糊,只用ip做网站 不备案,网站建设 主要学是么我将整个厨盆放入一个小型Web应用程序中#xff0c;此应用程序是我在该帖子中开发的一部分-Spring Boot#xff0c;Spring Integration#xff0c;RabbitMQ#xff0c;最后是该帖子的主题#xff0c;Spring MVC与Spring 4中的Websocket支持。 实时地震清单应用 最终的应用… 我将整个厨盆放入一个小型Web应用程序中此应用程序是我在该帖子中开发的一部分-Spring BootSpring IntegrationRabbitMQ最后是该帖子的主题Spring MVC与Spring 4中的Websocket支持。 实时地震清单应用 最终的应用程序将列出世界各地发生的地震并实时更新如果可以将一分钟视为足够实时的话其内容如下 存储地震信息 该应用程序的第一部分是每分钟从USGS地震危害计划中轮询数据并进行存储。 我选择将其直接存储到RabbitMQ主题中稍后将其用于Websockets集成。 Spring Integration非常适合此类功能的需求-仅使用配置我就可以轮询USGS服务以提供此信息的json供稿并将其写入RabbitMQ主题。 这是这样的流程 下面是相同的原始完整Spring集成流程此处缺少的唯一代码是Rabbitmq的配置该配置是另一个配置文件的一部分 import resourcerabbit-context.xml/int:inbound-channel-adapter channelquakeinfotrigger expressionint:poller fixed-delay60000/int:poller/int:inbound-channel-adapterint:channel idquakeinfo/int:channel idquakeinfotrigger/int:channelint-http:outbound-gateway idquakerHttpGatewayrequest-channelquakeinfotriggerurlhttp://earthquake.usgs.gov/earthquakes/feed/geojson/all/hourhttp-methodGETexpected-response-typejava.lang.StringcharsetUTF-8reply-channelquakeinfo/int-http:outbound-gatewayint-amqp:outbound-channel-adapter amqp-templateamqpTemplate channelquakeinfo / 因此现在我有了一个流程来收集地震信息并将其存储到名为“ amq.topic”的RabbitMQ主题中并在内部将“ quakes.all”的路由密钥插入每个地震信息中下一步是要弄清楚如何在浏览器应用程序上动态显示此信息。 呈现地震信息 Spring Framework 4.0借助框架中内置的基于Websocket的消息传递支持可以轻松开发应用程序的Web部件。 Spring 4.0使用STOMP作为原始Websocket的高级协议–我提供了一些参考这些参考使Websocket支持的细节更加清晰。 本质上Spring将充当浏览器的中介以订阅RabbitMQ地震主题并在流入新地震信息时显示实时信息来自参考文献的此图很好地总结了这一点 外部代理对Spring 4 Websockets的支持要求代理支持STOMP协议该协议易于使用RabbitMQ启用 。 有了RabbitMQ中的STOMP支持Spring MVC配置如下所示 Configuration
EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {config.enableStompBrokerRelay(/topic/);config.setApplicationDestinationPrefixes(/app);}Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint(/quakesep).withSockJS();}
} “ / topic”被注册为终结点其中Spring充当了RabbitMQ STOMP支持的网关 “ / app”是应用程序前缀Spring MVC将在该应用程序前缀中侦听在STOMP消息帧内编码的浏览器请求在这种特定情况下我没有从UI收到任何请求因此未真正使用此端点 “ / quakesep”是websocket端点 这就是服务器端所需的全部内容 现在为了让客户订阅RabbitMQ主题中的消息我已经按照其中一篇参考文章中的示例实现了该消息。 该示例使用sockjs client 这是一个JavaScript库用于在浏览器中进行websocket仿真。 这是连接到websocket端点“ / quakesep”并订阅“ /topic/quakes.all”端点的javascript代码的样子。 这会在内部为该Websocket会话向RabbitMQ注册一个临时队列并将AMQP路由密钥“ quakes.all”映射到该临时队列实质上是将所有地震消息发送到该会话的临时队列。 function connect() {var socket new SockJS(/quakesep);stompClient Stomp.over(socket);stompClient.connect({}, function(frame) {console.log(Connected: frame);stompClient.subscribe(/topic/quakes.all, function(message){showQuakeInfo(message.body);});});} 从RabbitMQ获得时上面的showQuakeInfo函数仅显示新鲜的地震信息。 整个示例与Spring Boot结合在一起这可以确保将pom文件中声明的依赖项保持在最低限度启动应用程序所需的配置量非常小-本质上是我在上面显示的WebSocketConfig代码 我在github上有可用的代码 资源资源 Spring Framework中的Websocket架构 使用Spring Framework构建基于Websocket的应用程序的网络研讨会 参考 all和其他博客中来自JCG合作伙伴 Biju Kunjummen的Spring 4 Websockets 。 翻译自: https://www.javacodegeeks.com/2014/03/websockets-with-spring-4.html