我正在使用java cometd客户端.它已连接几分钟,但过了一段时间后它记录了以下错误.我该怎么办error 408?我应该断开连接,终止,中止还是忽略,请调用Java GC?
java.net.ProtocolException:意外响应408 HTTP错误408请求超时
Web服务器(运行Web站点)认为间隔时间过长
套接字连接实际上已丢失 - Web服务器timed out在该特定套接字连接上.必须及时重复客户的请求.
扩展了BayeuxClient
public class EventHostClient extends BayeuxClient {
private final Logger logger = LoggerFactory.getLogger(EventHostClient.class);
public EventHostClient(String url, ClientTransport transport, ClientTransport... transports) {
super(url, transport, transports);
}
@Override
public void onFailure(Throwable x, Message[] messages) {
logger.info("Messages failed "+ x.getMessage());
logger.debug("Messages failed. Reason : " + Arrays.toString(messages), x);
}
}
Run Code Online (Sandbox Code Playgroud)
这是日志消息
2017-06-22 17:59:37.221 [HttpClient-2123] DEBUG c.q.q.n.i.eventhost.EventHostClient - Messages failed. Reason : [{id=4681, connectionType=long-polling, channel=/meta/connect, …Run Code Online (Sandbox Code Playgroud) 我有我的 .NET 客户端(Windows 服务),它订阅了 Salesforce 流 API 推送主题。
我能够连接到 Salesforce 并且可以将通知发送给我的客户。一切正常,但是:
如果我更新对象一段时间(可能是 2 小时)后通道上没有活动(Salesforce 对象没有更改),我将不会收到来自 Salesforce 的任何通知。
我曾尝试让听众登录,并在下面说的日志中
{"clientId":"f6xo67iet55w5j7ek6ldw72nfc6","channel":"/meta/connect","id":"82","successful":true} 5/15/2018 8:12:28 PM
{"advice":{"interval":0,"reconnect":"handshake"},"channel":"/meta/connect","id":"83","error":"403::Unknown client ","successful":false} 2018 年 5 月 15 日下午 8:12:28
{"clientId":"hbx1v2cxebbeder11s99dqkxmasre","advice":{"interval":0,"timeout":110000,"reconnect":"retry"},"channel":"/meta/connect","id": "85","successful":true} 5/15/2018 晚上 8:12:29
{"clientId":"hbx1v2cxebbeder11s99dqkxmasre","channel":"/meta/connect","id":"86","successful":true} 5/15/2018 8:14:20 PM
{"clientId":"hbx1v2cxebbeder11s99dqkxmasre","channel":"/meta/connect","id":"87","successful":true} 5/15/2018 8:16:10 PM
所以根据日志,有时我会收到“403::Unknown client”,但紧接着它又说通道成功。
但正如我所说,当我在 2 小时后尝试更新 Salesforce 对象时(根据日志,它连接成功)我没有收到任何通知。
如果我重新启动 Windows 服务并再次收到通知。
在我的客户中,我使用的是来自 - https://github.com/couchand/CometD.NET/tree/headers 的Cometd ,对于推送主题订阅,我正在使用它 - https://github.com/foluis/Salesforce_PushTopics
任何帮助将不胜感激。
我需要从wxPython APP连接到Bayeux服务器.
我会很感激任何提示.
Comet 是一种架构风格,而 Websockets/HTTP Streaming/SSE/BOSH/Bayeux 是这种架构风格的不同实现吗?