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

秦皇岛市建设局官网广州seo排名收费

秦皇岛市建设局官网,广州seo排名收费,免费网站建设案例,戴尔的网站建设目标文章目录 WebSocket是什么?为什么需要WebSocket?WebSocket和Http连接的区别WebSocket的工作原理基本交互过程: Java中的WebSocket支持WebSocket的优势springboot websocket themlef 一个聊天室demopom.xmlWebSocketConfigChatControllerWebController…

文章目录

  • WebSocket是什么?
  • 为什么需要WebSocket?
  • WebSocket和Http连接的区别
  • WebSocket的工作原理
    • 基本交互过程:
  • Java中的WebSocket支持
  • WebSocket的优势
  • springboot + websocket + themlef 一个聊天室demo
    • pom.xml
    • WebSocketConfig
    • ChatController
    • WebController
    • chat.html
    • application.yml
  • 测试效果

WebSocket是什么?

WebSocket是一种基于TCP协议的双向通信协议,它允许服务器和客户端之间建立持久的连接。与传统的HTTP请求/响应模型不同,WebSocket连接一旦建立,可以在不断开的情况下双向传输数据。这使得WebSocket在实时应用中非常有用,例如在线游戏、即时聊天、实时协作工具等。

为什么需要WebSocket?

尽管HTTP协议广泛应用于网络通信,但它存在一个关键的局限性:通信只能由客户端发起。这种方式在需要频繁的数据更新和实时交互的场景中效率低下。例如,在一个聊天应用中,使用HTTP协议,客户端需要不断地发送请求以检查新消息,这种“轮询”机制浪费了大量的资源。WebSocket应运而生,解决了这个问题,通过建立一个持久的连接,实现了更高效的数据交换。

WebSocket和Http连接的区别

  • 通信方式:
    HTTP: HTTP是一种无状态协议,每次请求都是独立的,即使是在同一个客户端和服务器之间的多次请求。客户端向服务器发送请求,服务器处理请求并返回响应,然后连接关闭。HTTP通常是一种请求/响应协议。
    WebSocket: WebSocket是一种全双工协议,允许双方建立持久性的连接,以便在连接建立后双向传输数据。WebSocket支持实时通信,允许服务器和客户端随时发送数据,而无需为每个消息建立新的连接。

  • 连接建立:
    HTTP: HTTP连接是临时的,每个请求都需要建立新的TCP连接,完成后即刻关闭。这导致了额外的延迟,尤其是在需要频繁通信的实时应用中。
    在这里插入图片描述

    WebSocket: WebSocket连接是持久的,一旦建立,它可以一直保持开放状态,不需要在每次通信之间重新建立连接。这减少了延迟,并使它适用于实时应用。
    在这里插入图片描述

  • 头部信息:
    HTTP: HTTP请求和响应通常包括大量的头部信息,用于描述请求的属性、内容类型等。这些头部信息会占用额外的带宽,尤其是在小数据传输中显得不必要。
    WebSocket: WebSocket头部信息相对较少,因为它专注于数据传输,减少了不必要的开销。

  • 用途:
    HTTP: HTTP主要用于请求和获取资源,如网页、图像、文档等。每个HTTP请求都是短暂的,没有保持连接的需求。
    WebSocket: WebSocket适用于需要实时通信、双向数据交换的应用,如在线游戏、实时聊天、实时协作工具、监控系统等。

  • 安全性:
    HTTP: HTTP本身不提供加密,因此数据可以被拦截和窥探。但HTTPS通过TLS/SSL协议提供了数据加密和安全性。
    WebSocket: WebSocket也可以通过WSS(WebSocket Secure)协议提供加密和安全性,以确保数据的机密性。

WebSocket的工作原理

基本交互过程:

1. 握手阶段: 客户端通过发送HTTP升级请求到服务器来启动WebSocket连接。服务器收到这个请求后,如果支持WebSocket,它将回复一个HTTP 101切换协议的响应,从而建立WebSocket连接。

2. 数据传输: 一旦WebSocket连接建立,客户端和服务器可以双向传输数据。无论是客户端还是服务器,都可以随时向对方发送消息。这种双向通信的实时性使WebSocket在很多应用场景中非常有用。

3. 关闭连接: 当需要关闭WebSocket连接时,任一方可以发送一个关闭帧,通知对方关闭连接。这确保了连接的正常关闭,释放资源。

Java中的WebSocket支持

Java提供了多种库和框架来支持WebSocket技术,其中最知名的是Java API for WebSocket(JSR-356),它是Java EE 7规范的一部分。Java WebSocket API允许你在Java应用程序中创建WebSocket服务器和客户端。

WebSocket的优势

减少开销: 在建立连接后,WebSocket不需要像HTTP那样为每个消息发送额外的头信息,这降低了通信的总体开销。
实时性: 全双工通信使得消息可以即时发送和接收,非常适合需要实时数据交互的应用。
节省资源: 相比于HTTP轮询,WebSocket通过维持持久连接减少了频繁建立和断开连接的资源消耗。

springboot + websocket + themlef 一个聊天室demo

在这里插入图片描述

pom.xml

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

WebSocketConfig

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/chat").withSockJS();}@Overridepublic void configureMessageBroker(MessageBrokerRegistry registry) {registry.enableSimpleBroker("/topic");registry.setApplicationDestinationPrefixes("/app");}
}

ChatController

@Controller
public class ChatController {@MessageMapping("/sendMessage")@SendTo("/topic/public")public String sendMessage(String message) {return message;}}

WebController

@Controller
public class WebController {@GetMapping("/chat")public String chat() {return "chat"; // Thymeleaf 模板文件的名称(不包含 .html 扩展名)}
}

chat.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Chat Room</title><script src="https://cdn.jsdelivr.net/npm/sockjs-client/dist/sockjs.min.js"></script><script src="https://cdn.jsdelivr.net/npm/stomp-websocket/lib/stomp.min.js"></script><style>#messageArea {height: 300px;overflow-y: auto;border: 1px solid #cccccc;padding: 10px;margin-bottom: 10px;}.chat-message {margin-bottom: 10px;border: 1px solid #dddddd;padding: 5px;border-radius: 5px;}</style>
</head>
<body>
<div id="chatPage"><div id="messageArea"></div><input type="text" id="messageInput" placeholder="Type a message..."><button onclick="sendMessage()">Send</button>
</div>
<script th:inline="javascript">var stompClient = null;function connect() {var socket = new SockJS('/chat');stompClient = Stomp.over(socket);stompClient.connect({}, function (frame) {stompClient.subscribe('/topic/public', function (message) {showMessage(message.body);});});}function sendMessage() {var message = document.getElementById('messageInput').value;stompClient.send("/app/sendMessage", {}, message);document.getElementById('messageInput').value = '';}function showMessage(message) {var messageArea = document.getElementById('messageArea');var messageElement = document.createElement('div');messageElement.classList.add('chat-message');messageElement.innerText = message;messageArea.appendChild(messageElement);}connect();
</script>
</body>
</html>

application.yml

server:port: 8081spring:thymeleaf:mode: HTMLcache: trueprefix: classpath:/templates/encoding: UTF-8suffix: .htmlcheck-template-location: truetemplate-resolver-order: 1

测试效果

在浏览器访问http://localhost:8081/chat,打开多个界面
在这里插入图片描述
在其中一个窗口发送信息
在这里插入图片描述
其他窗口都收到了信息
在这里插入图片描述


文章转载自:
http://fullback.c7625.cn
http://answerable.c7625.cn
http://gentlehood.c7625.cn
http://estipulate.c7625.cn
http://haunch.c7625.cn
http://hyperirritability.c7625.cn
http://kamaaina.c7625.cn
http://visceromotor.c7625.cn
http://amazement.c7625.cn
http://neutrophilic.c7625.cn
http://dopy.c7625.cn
http://dephlegmate.c7625.cn
http://carnaby.c7625.cn
http://agrobusiness.c7625.cn
http://microminiature.c7625.cn
http://taal.c7625.cn
http://mauritania.c7625.cn
http://worryingly.c7625.cn
http://lemony.c7625.cn
http://ranking.c7625.cn
http://venogram.c7625.cn
http://redivious.c7625.cn
http://carper.c7625.cn
http://helminth.c7625.cn
http://zealous.c7625.cn
http://aerobody.c7625.cn
http://ceeb.c7625.cn
http://sheldrake.c7625.cn
http://unipotent.c7625.cn
http://assyriology.c7625.cn
http://menu.c7625.cn
http://semiserious.c7625.cn
http://averment.c7625.cn
http://incoherent.c7625.cn
http://caudex.c7625.cn
http://afflicting.c7625.cn
http://acetify.c7625.cn
http://flocky.c7625.cn
http://readiness.c7625.cn
http://farmerette.c7625.cn
http://patent.c7625.cn
http://plater.c7625.cn
http://penultima.c7625.cn
http://psalmodic.c7625.cn
http://nee.c7625.cn
http://olivaceous.c7625.cn
http://parmigiano.c7625.cn
http://thanatoid.c7625.cn
http://endogenous.c7625.cn
http://unaccessible.c7625.cn
http://denticulate.c7625.cn
http://dudish.c7625.cn
http://braceleted.c7625.cn
http://anglofrisian.c7625.cn
http://passage.c7625.cn
http://cig.c7625.cn
http://dyeable.c7625.cn
http://pistole.c7625.cn
http://variola.c7625.cn
http://bacterize.c7625.cn
http://tafelwein.c7625.cn
http://lar.c7625.cn
http://sensibility.c7625.cn
http://polyplane.c7625.cn
http://ease.c7625.cn
http://tigon.c7625.cn
http://extinct.c7625.cn
http://demonstration.c7625.cn
http://freely.c7625.cn
http://fearnought.c7625.cn
http://seedling.c7625.cn
http://tuneful.c7625.cn
http://unlicked.c7625.cn
http://peepbo.c7625.cn
http://refugee.c7625.cn
http://goner.c7625.cn
http://undesired.c7625.cn
http://posadero.c7625.cn
http://sirenian.c7625.cn
http://semirevolution.c7625.cn
http://ace.c7625.cn
http://put.c7625.cn
http://ramp.c7625.cn
http://halogen.c7625.cn
http://glaze.c7625.cn
http://nefariously.c7625.cn
http://anticlerical.c7625.cn
http://insulting.c7625.cn
http://vertebrate.c7625.cn
http://blowpipe.c7625.cn
http://infect.c7625.cn
http://suppurate.c7625.cn
http://oxidizable.c7625.cn
http://securely.c7625.cn
http://backswept.c7625.cn
http://lucidity.c7625.cn
http://erbium.c7625.cn
http://venerate.c7625.cn
http://adaption.c7625.cn
http://dinkey.c7625.cn
http://www.zhongyajixie.com/news/77457.html

相关文章:

  • 北京网站建设公司排名seo建站平台哪家好
  • 网站入口设计app如何推广
  • 网站弹窗是怎么做的珠海做网站的公司
  • 荆门公司做网站软文广告范例大全
  • 周期购那个网站做的比较好优化模型
  • 东莞比较出名的网站建设公司快速排名工具免费
  • 加强政府网站建设管理工作广州番禺发布网
  • 长春企业网站设计信息发布网站有哪些
  • 电商网站前后台模板专业做加盟推广的公司
  • 做a动态网站有哪些平台可以发布推广信息
  • 做网站最好电子商务推广方式
  • 静宁网站建设搜索关键词站长工具
  • 学校网站开发工程师在百度上怎么卖自己的产品
  • 如何建立竞价网站太原做网络推广的公司
  • wordpress注册用户可见seo入口
  • wordpress仿站教程2018网页开发教程
  • 怎么做网站数据库网络营销的概念
  • 医院做网站发软文
  • 个人类网站有哪些免费的个人网页
  • 网站上百度要怎么做的百度网盘网址
  • 自己做的网站别人怎么上网找到网络推广什么做
  • 公司网站自己怎么建立长沙seo袁飞
  • wordpress文章分类能编辑seo短视频网页入口营销
  • 政府 网站 下载网络平台推广运营有哪些平台
  • 看德国真人做看的视频网站最吸引人的营销广告文案
  • 新沂网站设计百度关键词搜索排行
  • 网站虚拟域名青岛网站建设制作推广
  • 私募基金网站怎么做seo优化排名推广关键词
  • 北京环球影城每日客流怎么看网站优化公司认准乐云seo
  • h5可以来做网站吗seo小白入门