当前位置: 首页 > news >正文

云南网站建设维护小程序源码提取

云南网站建设维护,小程序源码提取,怎么制作一个网站教程,2016响应式网站模版环境#xff1a;Springboot3.0.5 WebSocket介绍 WebSocket协议RFC 6455提供了一种标准化的方式#xff0c;通过一个TCP连接在客户端和服务器之间建立全双工、双向的通信通道。它是一个不同于HTTP的TCP协议#xff0c;但设计为在HTTP之上工作#xff0c;使用80和443端口Springboot3.0.5 WebSocket介绍 WebSocket协议RFC 6455提供了一种标准化的方式通过一个TCP连接在客户端和服务器之间建立全双工、双向的通信通道。它是一个不同于HTTP的TCP协议但设计为在HTTP之上工作使用80和443端口并允许重用现有的防火墙规则。 WebSocket交互开始于一个HTTP请求使用HTTP Upgrade header进行升级在本例中是切换到WebSocket协议。下面的例子展示了这种交互: GET /spring-websocket-portfolio/portfolio HTTP/1.1 Host: localhost:8080 Upgrade: websocket // ① Connection: Upgrade // ② Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg Sec-WebSocket-Protocol: v10.stomp, v11.stomp Sec-WebSocket-Version: 13 Origin: http://localhost:8080 ①Upgrade header头部信息 ②使用 Upgrade 连接 支持WebSocket的服务器会返回类似下面的输出而不是通常的200状态码: HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: 1qVdfYHU9hPOl4JYYNXF623Gzn0 Sec-WebSocket-Protocol: v10.stomp 握手成功后HTTP upgrade请求的TCP套接字保持打开客户端和服务器可以继续发送和接收消息。 如果WebSocket服务器运行在web服务器(例如nginx)后面你可能需要配置它来将WebSocket升级请求传递给WebSocket服务器。同样如果应用程序运行在云环境中请查看云提供商提供的有关WebSocket支持的说明。 HTTP与WebSocket 尽管WebSocket在设计上是与HTTP兼容的而且从HTTP请求开始但重要的是要明白这两种协议导致了非常不同的架构和应用程序编程模型。 在HTTP和REST中应用程序被建模为多个url。为了与应用程序交互客户端以请求-响应的方式访问这些url。服务器根据HTTP URL、方法和首部将请求路由到适当的处理程序。 相比之下在websocket中初始连接通常只有一个URL。随后所有应用程序消息都在同一个TCP连接上流动。这是一种完全不同的异步、事件驱动的消息传递架构。 WebSocket也是一种底层传输协议与HTTP不同它对消息内容没有任何语义规定。这意味着除非客户端和服务器在消息语义上达成一致否则无法路由或处理消息。 WebSocket客户端和服务器可以通过HTTP握手请求的Sec-WebSocket-Protocol头部来协商使用更高级别的消息传递协议(例如STOMP)。在这种情况下他们需要制定自己的惯例。 什么时候该使用WebSocket WebSockets可以使网页具有动态性和交互性。然而在许多情况下Ajax和HTTP流或长轮询的组合可以提供简单而有效的解决方案。 例如新闻、邮件和社交源需要动态更新但每隔几分钟更新一次完全没问题。另一方面协作、游戏和金融应用需要更接近实时。 延迟本身并不是决定性因素。如果消息量相对较少(例如监视网络故障)HTTP流或轮询可以提供有效的解决方案。低延迟、高频率和高容量的组合才是WebSocket的最佳选择。 还要记住在互联网上你无法控制的限制性代理可能会阻止WebSocket交互要么是因为它们没有配置为传递Upgrade header要么是因为它们关闭了看起来空闲的长连接。这意味着对防火墙内的内部应用程序使用WebSocket比面向公众的应用程序更直接。 WebSocket核心API Spring框架提供了一个WebSocket API可以用它来编写处理WebSocket消息的客户端和服务器端应用程序。 WebSocketHandler 创建WebSocket服务器很简单只需实现WebSocketHandler或者扩展TextWebSocketHandler或BinaryWebSocketHandler。下面的例子使用了TextWebSocketHandler: public class MessageHandler extends TextWebSocketHandler {Overridepublic void handleTextMessage(WebSocketSession session, TextMessage message) {System.out.printf(SessionId: %s, 接收到消息: %s%n, session.getId(), message.getPayload()) ;try {session.sendMessage(new TextMessage(服务端接收到消息 - message.getPayload())) ;} catch (IOException e) {e.printStackTrace();}}Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {System.out.printf(连接成功, 会话Id: %s, Attribute: %s%n, session.getId(), session.getAttributes()) ;}Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {System.out.printf(连接关闭, 会话Id: %s, 关闭状态: %s%n, session.getId(), status.getCode() - status.getReason()) ;}} WebSocket配置 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(messageHandler(), /message)}Beanpublic WebSocketHandler messageHandler() {return new MessageHandler();} } WebSocket Handshake 要定制初始的HTTP WebSocket握手请求最简单的方法是使用HandshakeInterceptor它提供了握手前和握手后的方法。你可以使用这样的拦截器来阻止握手或者让 WebSocketSession可以访问任何属性。下面的例子使用内置的拦截器将HTTP会话属性传递给WebSocket会话: Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(messageHandler(), /message).setHandshakeHandler(handshakeHandler())// 添加捂手拦截器.addInterceptors(new HandshakeInterceptor() {// 如果该方法返回false则不允许建立连接Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,WebSocketHandler wsHandler, MapString, Object attributes) throws Exception {// todoattributes.put(uid, uid) ;return true ;}Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,Exception exception) {// todo}}) ;} } 部署 Spring WebSocket API很容易集成到Spring MVC应用程序中DispatcherServlet可以同时处理HTTP WebSocket握手和其他HTTP请求。调用 WebSocketHttpRequestHandler也很容易集成到其他HTTP处理场景中。这样既方便又容易理解。但是对于JSR-356运行时需要特别注意。 Java WebSocket API (JSR-356)提供两种部署机制。第一种方法涉及启动时的Servlet容器类路径扫描(Servlet 3特性)ServerEndpoint。另一个是Servlet容器初始化时使用的注册 API( ServletContainerInitializer)。这两种机制都不可能对所有HTTP处理使用单个“前端控制器” — 包括WebSocket握手和所有其他HTTP请求 — 如Spring MVC的DispatcherServlet。 这是JSR-356的一个重要限制Spring的WebSocket支持通过特定于服务器的RequestUpgradeStrategy实现来解决这个问题即使运行在JSR-356运行时也是如此。Tomcat、Jetty、GlassFish、WebLogic、WebSphere和Undertow(以及WildFly)目前都存在这样的策略。 服务配置 每个底层WebSocket引擎都公开了控制运行时特征的配置属性例如消息缓冲区大小、空闲超时等。 对于Tomcat、WildFly和GlassFish可以在WebSocket Java配置中添加 ServletServerContainerFactoryBean如下面的例子所示: Bean public ServletServerContainerFactoryBean servletServerContainerFactoryBean() {ServletServerContainerFactoryBean container new ServletServerContainerFactoryBean() ;container.setMaxTextMessageBufferSize(8192) ;container.setMaxBinaryMessageBufferSize(8192) ;return container ; } 允许的来源 从Spring Framework 4.1.5开始WebSocket和SockJS的默认行为是只接受同源请求。也可以允许所有或指定的来源列表。这个检查主要是为浏览器客户端设计的。没有什么能阻止其他类型的客户端修改Origin首部值。 三种可能的行为是 仅允许同源请求(默认):在这种模式下当启用SockJS时Iframe HTTP响应头X-Frame-Options设置为SAMEORIGIN并且禁用JSONP传输因为它不允许检查请求的来源。因此启用此模式时不支持IE6和IE7。 允许指定的来源列表:每个允许的来源必须以http://或https://.开头在此模式下当启用SockJS时禁用IFrame传输。因此启用此模式时将不支持IE6到IE9。 允许所有来源:要启用此模式你应该提供*作为允许的来源值。在该模式下所有传输通道都可用。 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(messageHandler(), /message).setAllowedOriginPatterns(*) ;} } 测试 通过上面的介绍和配置WebSocket环境就算是简单的配置完成了接下来通过Postman进行测试。 连接成功 发送消息及接收消息 服务端接收到消息 完毕 求助三连~~~
http://www.hkea.cn/news/14318411/

相关文章:

  • 建设网站合同文档建设公共网站的目的
  • 贵州遵义企业公司网站建设给别人做网站做什么科目
  • 小企业网站建设价格安徽省工程建设工程信息网站
  • alex网站建设发布课程的网站模板
  • 一般卖机械行业的做哪些网站看公狍和女人做爰网站
  • 无锡响应式网站制作德州网站推广
  • 网站关键字可以做几个旅游网站有哪些
  • 服装网站开发方案swot无锡网站制作无锡做网站
  • 定制开发网站如何报价个人做影视网站版权问题
  • 合肥网站关键词不用dw怎么做网站
  • 湖州做网站建设的公司外贸软件
  • 九易建网站的建站模板医院网站怎么制作
  • 在百度里面做个网站怎么做网站都有什么功能
  • 专注电子商务网站建设西安建筑科技大学就业信息网
  • 留言网站怎么做吴江注册公司
  • 青岛李沧网站建设文化传播网站建设
  • 网站建设大恶意点击软件哪几种
  • 电脑编程培训网站seo分析
  • 阿里巴巴国际站特点如今做那些网站能致富
  • 哪个网站有做兼职的购买空间网站哪个好
  • 想自己做淘宝有什么网站吗常熟市做网站公司
  • 做网站资料准备什么教育品牌网站建设
  • 自己做网站升seo品牌网站制作方案
  • 深圳企业社保网站官网百度制作企业网站多少钱
  • 大眼睛网站建设做介绍的英文网站
  • 做面膜的网站中国机床行业
  • 北京著名网站建设公司职业生涯规划大赛规划书
  • 湘潭网站建设优化技术广州建设监理协会网站
  • 搜索引擎不收录网站东莞市建设网站首页官网
  • 网站推广策划方案大数据灯饰网站需要这么做