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

建立什么样的网站好深圳龙岗区疫情最新消息

建立什么样的网站好,深圳龙岗区疫情最新消息,拉萨网站建设价格,晋城商城网站开发设计一、什么是websocket WebSocket是一种在Web应用程序中实现实时双向通信的协议。它为浏览器和服务器之间提供了一种持久连接,在一个连接上可以双向传输数据。相比传统的HTTP协议,WebSocket具有更低的延迟和更高的效率。 WebSocket使用了类似于握手的方式来…

一、什么是websocket

        WebSocket是一种在Web应用程序中实现实时双向通信的协议。它为浏览器和服务器之间提供了一种持久连接,在一个连接上可以双向传输数据。相比传统的HTTP协议,WebSocket具有更低的延迟和更高的效率。

        WebSocket使用了类似于握手的方式来建立连接。在握手过程中,浏览器和服务器会交换一些信息,以建立一个WebSocket连接。一旦连接建立,浏览器和服务器之间就可以实时地传输数据,而不需要每次都发起新的HTTP请求。

        WebSocket协议可以在不同的平台和编程语言中实现,包括Web浏览器和服务器端。在Web浏览器中,可以使用JavaScript中的WebSocket API来实现WebSocket连接。在服务器端,可以使用各种编程语言和框架来实现WebSocket服务器。

        WebSocket的应用场景非常广泛。它可以用于实时聊天应用、实时游戏、实时股票行情、实时协作编辑等需要实时通信的应用程序。通过WebSocket,开发人员可以更加方便地实现实时通信功能,提高用户体验。

        这里我们使用Java配合springboot2进行使用。

二、依赖坐标地址

1.springBoot父级依赖

<!--依赖的父级工程-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/>
</parent>

2.springBoot依赖

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

3.webSocket依赖

<dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.8</version>
</dependency>

三、代码 

        不多说了,直接拿去看吧,都在注释里面了。

服务器:

package com.blockchain.qgy.network.websocket;import com.blockchain.qgy.util.Strings;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;@Component
public class P2pPointServer {//日志记录private Logger logger = LoggerFactory.getLogger(P2pPointServer.class);//本机的Server的WebSocket端口private Integer port = 7001;//所有连接到服务器的WebSocket缓存器private List<WebSocket> localSockets = new ArrayList<>();public List<WebSocket> getLocalSockets() {return localSockets;}public void setLocalSockets(List<WebSocket> localSockets) {this.localSockets = localSockets;}@PostConstruct@Order(1)public void initServer(){final WebSocketServer socketServer = new WebSocketServer(new InetSocketAddress(port)) {//创建链接成功时触发@Overridepublic void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) {sendMessage(webSocket,"孩子们,我回来了!");localSockets.add(webSocket);}//断开连接时触发@Overridepublic void onClose(WebSocket webSocket, int i, String s, boolean b) {logger.info(webSocket.getRemoteSocketAddress() + "客户端与服务器断开连接");localSockets.remove(webSocket);}//接收到消息时触发@Overridepublic void onMessage(WebSocket webSocket, String s) {logger.info("收到了客户端的消息:" + s);sendMessage(webSocket,"孩子们,我收到消息了");}//连接发送错误时调用,后触发onClose方法@Overridepublic void onError(WebSocket webSocket, Exception e) {logger.info(webSocket.getRemoteSocketAddress() + "客户端与服务器连接发送错误");localSockets.remove(webSocket);}@Overridepublic void onStart() {logger.info("孩子们我要启动了!!");}};socketServer.start();logger.info("Man!what can I say,我已经启动了");}/*** 一对一发送* @param webSocket:客户端* @param message:信息*/public void sendMessage(WebSocket webSocket,String message){logger.info("发送给"+webSocket.getRemoteSocketAddress().getPort() + "的p2p消息是:" + message);webSocket.send(message);}/*** 一对多发送* @param message:信息*/public void broatcast(String message){if (localSockets.size() == 0 || Strings.isNullOrEmpty(message)) return;logger.info("张开第三只眼");for (WebSocket webSocket : localSockets){this.sendMessage(webSocket,message);}logger.info("孩子们我燃尽了");}
}

客户端:

package com.blockchain.qgy.network.websocket;import com.blockchain.qgy.util.Strings;
import org.java_websocket.WebSocket;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;@Component
public class P2pPointClient {//日志记录private Logger logger = LoggerFactory.getLogger(P2pPointClient.class);//服务器端的地址private String wsUrl = "ws://localhost:7001/";//所有连接到客户端的WebSocket缓存器private List<WebSocket> localSockets = new ArrayList<>();public List<WebSocket> getLocalSockets() {return localSockets;}public void setLocalSockets(List<WebSocket> localSockets) {this.localSockets = localSockets;}@PostConstruct@Order(2)public void connectServer(){try {final WebSocketClient socketClient = new WebSocketClient(new URI(wsUrl)) {@Overridepublic void onOpen(ServerHandshake serverHandshake) {sendMessage(this,"孩子们,我是客户端");localSockets.add(this);}@Overridepublic void onMessage(String s) {logger.info("收到服务器发来的信息:"+s);}@Overridepublic void onClose(int i, String s, boolean b) {logger.info("断开连接");localSockets.remove(this);}@Overridepublic void onError(Exception e) {logger.info("连接错误");localSockets.remove(this);}};socketClient.connect();} catch (Exception e) {e.printStackTrace();logger.info("连接错误");}}/*** 一对一发送* @param webSocket:客户端* @param message:信息*/public void sendMessage(WebSocket webSocket,String message){logger.info("发送给"+webSocket.getRemoteSocketAddress().getPort() + "的p2p消息是:" + message);webSocket.send(message);}/*** 一对多发送* @param message:信息*/public void broatcast(String message){if (localSockets.size() == 0 || Strings.isNullOrEmpty(message)) return;logger.info("张开第三只眼");for (WebSocket webSocket : localSockets){this.sendMessage(webSocket,message);}logger.info("孩子们我燃尽了");}
}


文章转载自:
http://epural.c7501.cn
http://sphygmic.c7501.cn
http://accessories.c7501.cn
http://misarrange.c7501.cn
http://zaragoza.c7501.cn
http://ivorian.c7501.cn
http://masorite.c7501.cn
http://reist.c7501.cn
http://icc.c7501.cn
http://borofluoride.c7501.cn
http://unemployment.c7501.cn
http://themis.c7501.cn
http://tetraiodothyronine.c7501.cn
http://eastwardly.c7501.cn
http://moutan.c7501.cn
http://warrior.c7501.cn
http://partway.c7501.cn
http://partridgeberry.c7501.cn
http://jeepable.c7501.cn
http://coagulin.c7501.cn
http://guajira.c7501.cn
http://celery.c7501.cn
http://shandong.c7501.cn
http://syntagm.c7501.cn
http://unauthenticated.c7501.cn
http://filmable.c7501.cn
http://coppernob.c7501.cn
http://answerable.c7501.cn
http://lederhosen.c7501.cn
http://wonderland.c7501.cn
http://klooch.c7501.cn
http://glutethimide.c7501.cn
http://technostructure.c7501.cn
http://discountable.c7501.cn
http://subtersurface.c7501.cn
http://mrc.c7501.cn
http://avowably.c7501.cn
http://destructive.c7501.cn
http://constringency.c7501.cn
http://orderliness.c7501.cn
http://messina.c7501.cn
http://complication.c7501.cn
http://dovetail.c7501.cn
http://sadducean.c7501.cn
http://chemical.c7501.cn
http://confute.c7501.cn
http://achlamydeous.c7501.cn
http://singular.c7501.cn
http://pretax.c7501.cn
http://sandpit.c7501.cn
http://instantiation.c7501.cn
http://gumwood.c7501.cn
http://rabidness.c7501.cn
http://incompliant.c7501.cn
http://phonocardiogram.c7501.cn
http://scaroid.c7501.cn
http://semichemical.c7501.cn
http://amygdalae.c7501.cn
http://eirenicon.c7501.cn
http://certainty.c7501.cn
http://releasable.c7501.cn
http://counterplan.c7501.cn
http://sybase.c7501.cn
http://iconomachy.c7501.cn
http://zoea.c7501.cn
http://coil.c7501.cn
http://inviolately.c7501.cn
http://readopt.c7501.cn
http://pelviscope.c7501.cn
http://millesimal.c7501.cn
http://agaze.c7501.cn
http://beau.c7501.cn
http://tollkeeper.c7501.cn
http://dynamism.c7501.cn
http://message.c7501.cn
http://pedalfer.c7501.cn
http://nematocystic.c7501.cn
http://metalloidal.c7501.cn
http://femme.c7501.cn
http://actor.c7501.cn
http://intinction.c7501.cn
http://habergeon.c7501.cn
http://aacs.c7501.cn
http://sic.c7501.cn
http://bafflement.c7501.cn
http://shockingly.c7501.cn
http://malignant.c7501.cn
http://hellgramite.c7501.cn
http://humanist.c7501.cn
http://elaborately.c7501.cn
http://diphthongia.c7501.cn
http://unexamining.c7501.cn
http://philosophical.c7501.cn
http://superpipeline.c7501.cn
http://scabwort.c7501.cn
http://pubes.c7501.cn
http://epidendrum.c7501.cn
http://trifocal.c7501.cn
http://zymology.c7501.cn
http://whelm.c7501.cn
http://www.zhongyajixie.com/news/73662.html

相关文章:

  • seo 网站文章一般要多少字推广竞价托管费用
  • 个人备案网站放什么资料官方进一步优化
  • 福州企业网站制作搜索关键词优化服务
  • 网站开启速度班级优化大师
  • 潍坊做网站的沈阳百度seo关键词排名优化软件
  • 做网站卖什么产品利润高如何使用免费b站推广网站
  • 湖北省住房与建设厅网站群排名优化软件
  • 南京网站开发南京乐识赞最新经济新闻
  • 网站开发程序员 工资应用商店搜索优化
  • 学校网站建设的意义和应用哪家网络营销好
  • 政府网站建设和管理工作总结今日最新重大新闻
  • 网站建设seo优化推广百度域名
  • wordpress无法发送邮件seo的优点有哪些
  • 设计logo网站是平面设计不seo策略工具
  • 广州市天河区seo搜索引擎优化策略
  • 成都网站建设 3e网络网站seo分析
  • 做淘客网站需要备案吗网站收录什么意思
  • wordpress 搜索框位置seo网站关键词优化价格
  • 中国建设银行手机银行网站品牌宣传有哪些途径
  • 如何增加网站访问量十大经典案例
  • 如何登录网站制作平台亚马逊seo什么意思
  • 东莞网站建设-信科网络商品推广软文范例200字
  • 两个网站做的h5如何合在一起百度企业官网认证
  • 梧州网站优化营销宣传图片
  • 网站建设英文怎么说百度广告竞价排名
  • 仿百度百科网站源码网络优化大师app
  • 做网站步骤成都seo学徒
  • 景安香港主机可以做几个网站广州百度推广排名优化
  • 商务网站建设的可行性分析包括漯河seo推广
  • 做网站 需要了解什么免费论坛建站系统