我已经实现了一个服务器应用程序,该应用程序使用netty框架使用ChannelInblundHandlerAdapter读取传入的字节。
如标题所示,我的问题是,我不定期地从客户端获取内容,我认为是在〜1.500字节后被削减。例如:在这种情况下,我应该收到一个大的JSON数组。因为它被剪切,所以我无法解析它。
我尝试在使用消息之前使用管道中的附加ByteToMessageDecoder通道对消息进行解码。但这不能解决问题。我在JSON中没有定界符,因此我可以检查并再次将两个(或多个)部分粘在一起。
这是我的管道配置:
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) {
ch.pipeline().addLast(new IdleStateHandler(45,0,0));
ch.pipeline().addLast(new MyByteToMessageDecoder());
ch.pipeline().addLast(new GatewayCommunicationHandler());
}
})
.option(ChannelOption.SO_BACKLOG, 128)
.option(ChannelOption.SO_RCVBUF, 8192)
.childOption(ChannelOption.RCVBUF_ALLOCATOR, new FixedRecvByteBufAllocator(8192))
.childOption(ChannelOption.SO_KEEPALIVE, true);
initRestServer();
// Bind and start to accept incoming connections.
ChannelFuture f = b.bind(Config.gatewayPort).sync();
f.channel().closeFuture().sync();
Run Code Online (Sandbox Code Playgroud)
多数民众赞成在我的ByteToMessageDecoder:(我知道这是一团糟,但我不知道如何处理我的情况)
public class MyByteToMessageDecoder extends ByteToMessageDecoder {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
byte[] receivedBytes = new byte[in.readableBytes()];
in.getBytes(in.readerIndex(), receivedBytes);
if (receivedBytes[in.readableBytes()-1] != (byte) …Run Code Online (Sandbox Code Playgroud) 我是使用 Symfony 和 Sulu CMS 管理网站的新手。
但现在我必须根据现有项目设置一个测试环境。到目前为止,我想我已经成功地让 Symfony 和 Sulu 基本正常工作了。
现在我的问题是:我创建了一个用户,并且php app/console sulu:security:user:create工作正常。到目前为止,我还无法创建角色,但 MySQL 数据库中已有角色,因此我为新用户使用了其中一个角色。当我尝试登录 sulu.lo/admin 页面时,新的用户和密码组合不起作用。
我可以执行任何检查来提示可能出现的问题吗?
请向我询问所需的额外信息。
此致