我們使用 smack 庫來建立到 GCM 的 XMPP 連接。我已經(jīng)在應(yīng)用程序上有很多連接,我們已經(jīng)實(shí)現(xiàn)了 Smack 庫的 ConnectionListener 類。所以我們使用以下方法。@Overridepublic void connectionClosedOnError(Exception e) { logger.error(e, "connectionListener::connectionClosedOnError::appKey::{}::clientId::{}", appKey, clientId);}這個實(shí)現(xiàn)已經(jīng)工作了很長時間。但是最近 2 天我們遇到了這樣的錯誤;05:16:50,846 ERROR [CcsClient ] - connectionListener::connectionClosedOnError::appKey::xxx::clientId::xxxxjava.net.SocketException: Connection resetat java.net.SocketInputStream.read(SocketInputStream.java:196)at java.net.SocketInputStream.read(SocketInputStream.java:122)at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)at sun.security.ssl.InputRecord.read(InputRecord.java:480)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:891)at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)at java.io.InputStreamReader.read(InputStreamReader.java:184)at java.io.BufferedReader.fill(BufferedReader.java:154)at java.io.BufferedReader.read1(BufferedReader.java:205)at java.io.BufferedReader.read(BufferedReader.java:279)at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:312)at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:48)at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)這是什么原因?
1 回答

www說
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個贊
我找到了問題的根源。我們正在打開大量到 GCM 的套接字連接以發(fā)送通知。由于我們的服務(wù)提供商設(shè)置的規(guī)則,我們的套接字連接在 10 分鐘后關(guān)閉。但是服務(wù)提供商的關(guān)閉方法導(dǎo)致錯誤。
然后 smack 調(diào)用connectionListener::connectionClosedOnError方法并嘗試重新連接到 GCM。但是當(dāng)服務(wù)負(fù)載很重時,它是如此昂貴。
添加回答
舉報
0/150
提交
取消