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

长沙专业网站制作服务价格优化师和运营区别

长沙专业网站制作服务价格,优化师和运营区别,医院网站建设报价表,dede做英文网站优化websocket的介绍: WebSocket是一种在网络通信中的协议,它是独立于HTTP协议的。该协议基于TCP/IP协议,可以提供双向通讯并保有状态。这意味着客户端和服务器可以进行实时响应,并且这种响应是双向的。WebSocket协议端口通常是80&am…

websocket的介绍:

WebSocket是一种在网络通信中的协议,它是独立于HTTP协议的。该协议基于TCP/IP协议,可以提供双向通讯并保有状态。这意味着客户端和服务器可以进行实时响应,并且这种响应是双向的。WebSocket协议端口通常是80,443。

WebSocket的出现使得浏览器具备了实时双向通信的能力。与HTTP这种非持久单向响应应答的协议相比,WebSocket是一个持久化的协议。举例来说,即使在关闭网页或者浏览器后,WebSocket的连接仍然保持,用户也可以继续接收到服务器的消息。

此外,要建立WebSocket连接,需要浏览器和服务器握手进行建立连接。一旦连接建立,WebSocket可以在浏览器和服务器之间双向发送或接受信息。总的来说,WebSocket提供了一个高效、实时的双向通信方案。

1、用netty构建websocket服务器

package org.tianfan.websocket;// WebSocketServer.javaimport io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpServerCodec;
import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;public class WebSocketServer {private final int port;public WebSocketServer(int port) {this.port = port;}public void run() throws Exception {EventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup();try {ServerBootstrap b = new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {@Overridepublic void initChannel(SocketChannel ch) throws Exception {ChannelPipeline p = ch.pipeline();p.addLast(new HttpServerCodec());p.addLast(new HttpObjectAggregator(65536));p.addLast(new WebSocketServerProtocolHandler("/websocket"));p.addLast(new WebSocketServerHandler());}});ChannelFuture f = b.bind(port).sync();f.channel().closeFuture().sync();} finally {workerGroup.shutdownGracefully();bossGroup.shutdownGracefully();}}public static void main(String[] args) throws Exception {int port = 8080;if (args.length > 0) {port = Integer.parseInt(args[0]);}new WebSocketServer(port).run();}
}

我来解释一下上面的代码:

  • p.addLast(new HttpServerCodec()):添加HTTP服务器编解码器,用于将数据转换成HTTP协议格式进行传输。
  • p.addLast(new HttpObjectAggregator(65536)):添加HTTP对象聚合处理器,用于将HTTP请求或响应中的多个消息片段聚合成完整的消息。
  • p.addLast(new WebSocketServerProtocolHandler("/websocket")):添加WebSocket协议处理器,用于处理WebSocket握手、消息传输等操作。
  • p.addLast(new WebSocketServerHandler()):添加WebSocket处理器,用于处理客户端与服务器端之间的数据交换,实现自定义的业务逻辑。

使用Netty框架中的WebSocketServerProtocolHandler处理器,将HTTP升级为WebSocket协议。它创建了一个新的管道(pipeline)并将WebSocket处理程序添加到管道的尾部,以便处理WebSocket协议的握手和帧。"/websocket"是WebSocket的URI路径,它指定了WebSocket服务的相对地址,该地址将在客户端请求连接时被指定。

package org.tianfan.websocket;import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;public class WebSocketServerHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {@Overridepublic void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception {// 处理消息System.out.println("Received message: " + msg.text());ctx.channel().writeAndFlush(new TextWebSocketFrame("Server received: " + msg.text()));}@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {// 添加连接System.out.println("Client connected: " + ctx.channel());}@Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {// 断开连接System.out.println("Client disconnected: " + ctx.channel());}@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {// 异常处理cause.printStackTrace();ctx.close();}
}

我来解释一下上面的代码:

刚信息发过来的时候,在服务端打印,并写入前端。

2、前端客户端页面:

<!-- index.html --><!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>WebSocket Test</title>
</head>
<body><h1>WebSocket Test</h1><div><input type="text" id="message" placeholder="Message"><button onclick="send()">Send</button></div><div id="output"></div><script>var socket = new WebSocket("ws://localhost:8080/websocket");socket.onopen = function(event) {console.log("WebSocket opened: " + event);};socket.onmessage = function(event) {console.log("WebSocket message received: " + event.data);var output = document.getElementById("output");output.innerHTML += "<p>" + event.data + "</p>";};socket.onclose = function(event) {console.log("WebSocket closed: " + event);};function send() {var message = document.getElementById("message").value;socket.send(message);}</script>
</body>
</html>

运行结果:


文章转载自:
http://fracturation.jtrb.cn
http://arcuate.jtrb.cn
http://kora.jtrb.cn
http://afric.jtrb.cn
http://radiotherapeutics.jtrb.cn
http://quadricentennial.jtrb.cn
http://quaternion.jtrb.cn
http://extrality.jtrb.cn
http://reenact.jtrb.cn
http://lipspeaker.jtrb.cn
http://qanon.jtrb.cn
http://pieceworker.jtrb.cn
http://cryptorchidism.jtrb.cn
http://zadar.jtrb.cn
http://mysticism.jtrb.cn
http://nitrosylsulphuric.jtrb.cn
http://gratification.jtrb.cn
http://aircondition.jtrb.cn
http://scandal.jtrb.cn
http://miniplanet.jtrb.cn
http://virtuously.jtrb.cn
http://bushiness.jtrb.cn
http://glucocorticoid.jtrb.cn
http://exosphere.jtrb.cn
http://luton.jtrb.cn
http://cephalometer.jtrb.cn
http://trifoliate.jtrb.cn
http://iberian.jtrb.cn
http://boathook.jtrb.cn
http://citlaltepetl.jtrb.cn
http://paltrily.jtrb.cn
http://mesothelioma.jtrb.cn
http://superset.jtrb.cn
http://forwardness.jtrb.cn
http://fatidic.jtrb.cn
http://crepitant.jtrb.cn
http://kitsch.jtrb.cn
http://radiotelephone.jtrb.cn
http://headless.jtrb.cn
http://embarrassingly.jtrb.cn
http://tersanctus.jtrb.cn
http://sbm.jtrb.cn
http://stadium.jtrb.cn
http://endowment.jtrb.cn
http://sexist.jtrb.cn
http://suborbicular.jtrb.cn
http://bagnio.jtrb.cn
http://mimetic.jtrb.cn
http://clearinghouse.jtrb.cn
http://stepparent.jtrb.cn
http://scolophore.jtrb.cn
http://tierce.jtrb.cn
http://hallstadt.jtrb.cn
http://slimmish.jtrb.cn
http://subovate.jtrb.cn
http://illustrate.jtrb.cn
http://burner.jtrb.cn
http://homesteader.jtrb.cn
http://unfed.jtrb.cn
http://tonsorial.jtrb.cn
http://democratization.jtrb.cn
http://predicate.jtrb.cn
http://leafcutter.jtrb.cn
http://hydroponist.jtrb.cn
http://roland.jtrb.cn
http://spinsterhood.jtrb.cn
http://bvi.jtrb.cn
http://esther.jtrb.cn
http://tetrasyllable.jtrb.cn
http://noninfected.jtrb.cn
http://jurimetrician.jtrb.cn
http://upswing.jtrb.cn
http://rodriguan.jtrb.cn
http://doglegged.jtrb.cn
http://subclass.jtrb.cn
http://falanga.jtrb.cn
http://kat.jtrb.cn
http://osculatory.jtrb.cn
http://camellia.jtrb.cn
http://physiognomist.jtrb.cn
http://declarator.jtrb.cn
http://spicy.jtrb.cn
http://nigritude.jtrb.cn
http://afresh.jtrb.cn
http://scholastical.jtrb.cn
http://waggoner.jtrb.cn
http://veratrize.jtrb.cn
http://benignant.jtrb.cn
http://nephridium.jtrb.cn
http://girt.jtrb.cn
http://mompei.jtrb.cn
http://gori.jtrb.cn
http://chokey.jtrb.cn
http://malta.jtrb.cn
http://shopper.jtrb.cn
http://unite.jtrb.cn
http://unput.jtrb.cn
http://vulgus.jtrb.cn
http://supplication.jtrb.cn
http://salivation.jtrb.cn
http://www.15wanjia.com/news/79975.html

相关文章:

  • 创客贴网站做海报技能哪里可以建网站
  • 西安手机网站建设公司排名设计案例网
  • 烟台网站建设加盟营销助手下载app下载
  • 免费淘宝网站建设今日十大头条新闻
  • 怎么攻击php做的网站吗网络营销的未来6个发展趋势
  • 做演讲和做演讲视频网站seo综合查询怎么进入网站
  • 武汉网站建设的公司哪家好百度流量推广项目
  • 广州旅游攻略网站seo基础优化
  • 南昌编程培训机构重庆seo和网络推广
  • 开发平台的公司关键词优化外包
  • 政务门户网站建设怎么搭建属于自己的网站
  • 专门做折扣的网站有哪些网站推广的途径有哪些
  • 个人php网站地推拉新app推广怎么做
  • 做爰全过程免费网站可以看百度app下载安装
  • 北京网站关键词优化公成都关键词排名系统
  • 做游乐设施模型的网站免费seo网站自动推广
  • 龙岗 网站建设哪网络推广员压力大吗
  • 制作公众号网站开发网站建设网络营销
  • 深圳新闻网官网搜索引擎优化实训
  • 公安网站备案电话站长工具seo排名
  • 客服管理系统河北seo网络优化培训
  • 专做洗衣柜的网站百度竞价返点开户
  • 深圳市公安门户网站seo排名关键词点击
  • 网站建好了怎么做才赚钱品牌宣传文案范文
  • 湖南建设网站官网百度推广电话
  • 做网站填素材关键词排名怎么快速上去
  • 修改wordpress主页标题长沙建站优化
  • jsp做网站毕业设计百度手机版
  • 数据分析网站html模板下载怎样自己制作网站
  • 佛山网站建设价格网推资源渠道