轻量级java服务器undertow

项目需求

服务器端项目是用mina写的传统socket,准备升级到支持websocket接入。

为什么采用undertow

1、Undertow 是基于 NIO 的高性能 Web 嵌入式服务器,并且支持websocket(这个很重要,只要把undertow集成到项目中,用undertow启用websokcet,然后把原来的socket切换到websocket。)

2、轻量级web服务器:多么轻量级呢,启动一个支持websocket的服务只需要20M内存,如下图:

 上图的代码如下:

public class WebSocketServer {

    public static void main(final String[] args) {
        Undertow server = Undertow.builder()
                .addHttpListener(8080, "localhost")
                .setHandler(path()
                        .addPrefixPath("/myapp", websocket(new WebSocketConnectionCallback() {
                            @Override
                            public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) {
                                channel.getReceiveSetter().set(new AbstractReceiveListener() {

                                    @Override
                                    protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) {
                                        WebSockets.sendText(message.getData(), channel, null);
                                    }
                                });
                                channel.resumeReceives();
                            }
                        }))
                        .addPrefixPath("/", resource(new ClassPathResourceManager(WebSocketServer.class.getClassLoader(), WebSocketServer.class.getPackage())).addWelcomeFiles("index.html")))
                .build();
        server.start();
    }

}

3、开源,遵循Apache 2.0。商业软件可使用,并且不要求商业软件开源。

4、支 持permessage-deflate压缩,这个是对通信内容进行压缩的扩展,可以有效的降低服务器和客户端通信使用的带宽。如下图

 

 在request请求头里边客户端表明了自己支持permessage-deflate、然后服务器在response头里边告诉了服务器采用permessage-deflatey压缩。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Undertow是一个用Java编写的轻量级Web服务器,它可以支持WebSocket协议。要在Undertow中使用WebSocket,首先需要创建一个WebSocket端点(WebSocketEndpoint),然后将其添加到Undertow的部署描述符(Deployment Descriptor)中。在客户端连接到WebSocket端点时,可以使用WebSocketSession对象来发送和接收消息。为了方便管理WebSocket会话,可以使用WebSocketSessionHandler类来处理WebSocket会话。这是一个基本的Undertow WebSocket实现的概述,具体实现细节可以参考Undertow官方文档。 ### 回答2: Undertow WebSocket是一种基于HTTP协议的双向通信机制,用于在Web浏览器和服务器之间建立实时的、持久的连接。它是在Undertow服务器框架上实现的,提供了一种简单、高效的方法来处理大量并发连接。 Undertow WebSocket允许服务器主动推送消息给浏览器,而不需要浏览器发送请求。这使得实时更新和通知成为可能,例如实时聊天、股票价格更新等。它采用基于事件的编程模型,当有新消息到达时,服务器会触发相应的事件,从而可以方便地处理和响应这些消息。 与传统的HTTP请求/响应模式不同,WebSocket连接是持久的,双向的。一旦建立连接,浏览器和服务器之间可以随时交换消息,而无需再次建立连接或发送新请求。这减少了不必要的网络开销,并且可以实时地传输数据。 Undertow WebSocket的另一个特性是支持多个子协议。子协议是一种在WebSocket连接上定义额外功能的扩展机制。它可以用于识别和处理不同类型的消息,以及在不同的应用中实现不同的行为。例如,可以定义一个子协议用于传输二进制数据,另一个子协议用于传输文本数据等。 总之,Undertow WebSocket提供了一种简单、高效的双向通信机制,可以用于实时更新和通知。它是在Undertow服务器框架上实现的,支持持久连接、基于事件的编程模型和多个子协议。在Web应用程序中,它为开发者提供了更强大的功能和更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值