如何构建一个基于netty的后端服务器

如何构建一个基于netty的后端服务器,第1张

HttpRequestHandler -- HTTP请求处理类

TextWebSocketFrameHandler -- 对应Text消息的处理类

WebSocketServer -- 系统主类

WebSocketServerInitializer -- 服务主程序的初始化类

WebSocketServer 类代码:

import io.netty.bootstrap.ServerBootstrap

import io.netty.channel.ChannelFuture

import io.netty.channel.ChannelOption

import io.netty.channel.EventLoopGroup

import io.netty.channel.nio.NioEventLoopGroup

import io.netty.channel.socket.nio.NioServerSocketChannel

public final class WebSocketServer {

private int port = 0

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 WebSocketServerInitializer())

.option(ChannelOption.SO_BACKLOG, 128)

.childOption(ChannelOption.SO_KEEPALIVE, true)

System.out.println("WebsocketChatServer 启动了")

// 绑定端口,开始接收进来的连接

ChannelFuture f = b.bind(port).sync()

// 等待服务器 socket 关闭 。在这个例子中,这不会发生,但你可以优雅地关闭你的服务器。

f.channel().closeFuture().sync()

} finally {

workerGroup.shutdownGracefully()

bossGroup.shutdownGracefully()

System.out.println("WebsocketChatServer 关闭了")

}

}

channelActive 是客户端链接到服务端的标志。 你的客户端没有网络,但是能连接成功是因为, 我猜测是你把客户端和服务端部署在同一台机器, 同一台机器上不走网络, 直接走网卡的环回地址127.0.0.1

netty框架是用在服务器端,客户端是嵌入式编程,通过自定义的tcp通信协议进行连接的,现在需求是这样的,服务器端只是用来和客户端进行通信,现在有第三方如微信端进行支付成功后在数据库里生成了一条数据,表示要往某个客户端发送指令,以下两种方式可供参考:

1、微信端生成通讯指令后调用TCP端的接口(负责通讯程序和数据库交互的),在接口程序中通过定义Socket连到通讯程序服务器端,根据通道编号去发送,但是这种会导致服务器端的tcp客户端连接变得更多。

2、直接在netty框架中定义了scheduleAtF。

当然也可借助第三方工具来完成推送。例如极光推送,极光推送具有以下功能:

1、多种消息类型

开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。

2、用户和推送统计

完整的消息生命周期查询,并且可以形成“推送报表”与“用户统计报表”呈现给开发者,用来观察推送的效果和应用发展趋势。

3、短信补充

通过极光后台推送APP通知消息,对于一些重要又不能遗漏的信息可以调用极光短信的后台对未收到的客户端发送短信通知,保证消息的可靠性。

4、A/B 测试

合理的推送能够激活用户,提高用户粘性,使用A/B分组测试的科学方法,根据测试反馈的结果,帮助开发者选择最优化的推送方案。

5、极光推送安全包

为金融、新闻、政务及其他对推送安全要求极高的客户提供安全严谨、稳定可靠的信息推送解决方案

6、可定制的私有云

对于安全性要求更高,希望推送数据和系统存储在自己服务器的客户,及个性化需求需要定制开发的,性能更高要求的,或者想拥有自己推送平台的甚至要求源码授权二次开发的开发者,极光提供全功能的私有云解决方案。

深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/422560.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-25
下一篇2023-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存