默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 在MobileIMSK的im服务端增加了一些代码后的报错求助
阅读(42277) | 评论(11 收藏1 淘帖
在测试服务器测试了一下报了一个错 大神给看一下什么原因
报错日志如下
[INFO] - [09:59:06.634][IMCORE-netty]与{uid:null}/127.0.0.1:38709的会话建立(channelActive)了... | (ServerCoreHandler^sessionCreated:377)
[DEBUG] - [09:59:06.635][IMCORE-netty]此客户端的Channel抛出了exceptionCaught,原因是:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $,可以提前close掉了哦! | (ServerCoreHandler^exceptionCaught:157)
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
        at com.google.gson.Gson.fromJson(Gson.java:887)
        at com.google.gson.Gson.fromJson(Gson.java:852)
        at com.google.gson.Gson.fromJson(Gson.java:801)
        at com.google.gson.Gson.fromJson(Gson.java:773)
        at net.openmob.mobileimsdk.server.protocal.ProtocalFactory.parse(ProtocalFactory.java:69)
        at net.openmob.mobileimsdk.server.utils.ServerToolKits.fromIOBuffer(ServerToolKits.java:145)
        at net.openmob.mobileimsdk.server.ServerCoreHandler.messageReceived(ServerCoreHandler.java:180)
        at net.nettime.mobileimsdk.server.netty.MBUDPClientInboundHandler.channelRead0(MBUDPClientInboundHandler.java:98)
        at net.nettime.mobileimsdk.server.netty.MBUDPClientInboundHandler.channelRead0(MBUDPClientInboundHandler.java:1)
        at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
        at net.nettime.mobileimsdk.server.netty.MBUDPChannel.doBeginRead(MBUDPChannel.java:144)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.beginRead(AbstractChannel.java:847)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.read(DefaultChannelPipeline.java:1311)
        at io.netty.channel.AbstractChannelHandlerContext.invokeRead(AbstractChannelHandlerContext.java:693)
        at io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:673)
        at io.netty.channel.ChannelDuplexHandler.read(ChannelDuplexHandler.java:95)
        at io.netty.channel.AbstractChannelHandlerContext.invokeRead(AbstractChannelHandlerContext.java:693)
        at io.netty.channel.AbstractChannelHandlerContext.read(AbstractChannelHandlerContext.java:673)
        at io.netty.channel.DefaultChannelPipeline.read(DefaultChannelPipeline.java:1020)
        at io.netty.channel.AbstractChannel.read(AbstractChannel.java:284)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.readIfIsAutoRead(DefaultChannelPipeline.java:1371)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1349)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199)
        at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:911)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:518)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:423)
        at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:482)
        at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
        at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
        ... 43 more


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:openfire集群配置host的原因是什么?下一篇:微信朋友圈千亿访问量背后的技术挑战和实践总结
推荐方案
评论 11
发送的内容是什么(我要完整的)?客户端的Log有吗?
引用:JackJiang 发表于 2018-04-28 10:20
发送的内容是什么(我要完整的)?客户端的Log有吗?

DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [Apr 28, 2018 10:30:00 AM]
WARN - 【IMCORE】本地UDP监听停止了(socket被关闭了?),Socket closed(Socket closed) [Apr 28, 2018 10:30:00 AM]
java.net.SocketException: Socket closed
        at java.net.PlainDatagramSocketImpl.peekData(Native Method)
        at java.net.DatagramSocket.receive(DatagramSocket.java:791)
        at net.openmob.mobileimsdk.java.core.LocalUDPDataReciever.p2pListeningImpl(LocalUDPDataReciever.java:145)
        at net.openmob.mobileimsdk.java.core.LocalUDPDataReciever.access$1(LocalUDPDataReciever.java:131)
        at net.openmob.mobileimsdk.java.core.LocalUDPDataReciever$1.run(LocalUDPDataReciever.java:109)
        at java.lang.Thread.run(Thread.java:745)
DEBUG - 【IMCORE】isLocalUDPSocketReady()==false,需要先resetLocalUDPSocket()... [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】Socket处于未初化状态(可能是您还未登陆),无需关闭。 [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】new DatagramSocket()中... [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】new DatagramSocket()已成功完成. [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】本地UDP端口侦听中,端口=0... [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】【BugFIX】这是服务端的登陆返回响应包,且服务端判定登陆失败(即code!=0),本次无需发送ACK应答包! [Apr 28, 2018 10:30:00 AM]
ERROR - 【DEBUG_UI】IM服务器登录/连接失败,错误代码:1111 [Apr 28, 2018 10:30:00 AM]
DEBUG - 【IMCORE】isLocalUDPSocketReady()==true,直接返回本地socket引用哦。 [Apr 28, 2018 10:30:00 AM]
引用:卍漂流太平洋卍 发表于 2018-04-28 10:30
DEBUG - 【IMCORE】正在closeLocalUDPSocket()... [Apr 28, 2018 10:30:00 AM]
WARN - 【IMCORE】本地U ...

你改动了代码了吧。把你改动的代码贴出来看看。
另外,服务端报的这个问题,你发送的数据是什么?
引用:JackJiang 发表于 2018-04-28 10:38
你改动了代码了吧。把你改动的代码贴出来看看。
另外,服务端报的这个问题,你发送的数据是什么?

客户端用的java的你的demo没有改动过
服务端只是在监听消息的类里加了些打印查了下数据库,试试进行简单的用户验证
引用:卍漂流太平洋卍 发表于 2018-04-28 10:42
客户端用的java的你的demo没有改动过
服务端只是在监听消息的类里加了些打印查了下数据库,试试进行简单 ...

服务端的demo原样运行,有问题吗
引用:JackJiang 发表于 2018-04-28 10:49
服务端的demo原样运行,有问题吗

昨天试还可以

唯一的差异就是你加的代码。
所以,要解决问题就别怜惜你的代码,直接贴出来看看,帮你分析一下
引用:JackJiang 发表于 2018-04-28 10:56
唯一的差异就是你加的代码。
所以,要解决问题就别怜惜你的代码,直接贴出来看看,帮你分析一下

我刚才用demo在本地和测试服务器试了一下,我本机是可以的,但是放到测试服务器上不行,没有改代码,服务端是正常运行的,
测试udp端口也是连通的 .这跟服务器的配置ip有关系吗
换了自己的测试服务器,倒是没顺题了。
但是我不知道是端口开放哪块没做好,因为是别人提供的服务器
引用:卍漂流太平洋卍 发表于 2018-04-28 14:27
我刚才用demo在本地和测试服务器试了一下,我本机是可以的,但是放到测试服务器上不行,没有改代码,服务 ...

同一份代码,不存在在本地机器可以,在远程机器不可以的情况。因为代码是死的。
你可以对比一下你本地JDK和远程的JDK版的差异。你远程机器上JDK用的是哪个版本?具体到小版本号
引用:JackJiang 发表于 2018-04-28 14:29
同一份代码,不存在在本地机器可以,在远程机器不可以的情况。因为代码是死的。
你可以对比一下你本地JD ...

服务器的jdk是我安装的1.7的没问题,应该是upd端口规则没配置好吧,后台没接收到响应。
引用:卍漂流太平洋卍 发表于 2018-04-28 16:41
服务器的jdk是我安装的1.7的没问题,应该是upd端口规则没配置好吧,后台没接收到响应。

防火樯的端口肯定是要配置的,但问题是你这异常怎么出现的,在为端口没开你客户端不可能连的上来,连不上来服务端怎么会有这样的反应呢。

如果是端口没有开放出来,可以参考这个帖子里的回复来做:
[已回复] 公网上的Windows 2008部署MobileIMSDK后客户端不能连接
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部