将事件源(服务器发送的事件)连接到服务器时出错
Error connecting EventSource (Server-sent event) to server
>我正在尝试将JavaScript EventSource连接到Servlet。我有以下JavaScript代码:
var eventSource = new EventSource("notify?userId=123456");
eventSource.onopen = function(e){
console.log("Connection Opened");
};
eventSource.onmessage = function(e){
console.log("Message: " + e.data);
};
eventSource.onerror = function(e){
console.log("Error");
};
其中 notify 是我的 Servlet 的位置(在我使用 @WebServlet("/notify")
的 Servlet 上),而 ?userId=123456 是我试图传递给 Servlet 的参数。在开发者控制台中,上述代码不会生成任何日志。但是,在服务器端,我可以看到代码确实连接了,但是,每当我尝试向客户端发送消息时,onmessage 函数都不会命中。如果我删除参数并执行以下操作:
var eventSource = new EventSource("notify");
在开发人员控制台中,每隔几秒钟我就会得到:
Connection Opened
Error
它似乎在不断重复。我在这里错过了什么?
因此,我得出的结论是,服务器发送的事件还没有完全存在。我遇到问题的原因是,在服务器端,如果没有 userId 参数,那么我将在该方法上调用 return。这将返回到客户端,提醒它连接已打开。奇怪的是,无论出于何种原因,这都会导致调用onerror方法,然后调用onopen方法。但是,连接已正确打开。如果我确实提供了 userId 参数,我将保存上下文以供以后在需要发送客户端信息时使用。我几乎不知道,这让客户相信它还没有连接。因此,EventSource 在收到第一条消息之前不会注册打开的状态。对我来说,这似乎有点集市,我相信可能还有其他一些问题和跨浏览器差异。因此,请远离服务器发送的事件!如果您有更多信息,请提供,谢谢。
相关文章:
- 服务器上的Meteor客户端断开连接事件
- 可以't连接客户端和服务器import.io
- SignalR连接到多个服务器
- Javascript/web-dev:为什么你需要一个服务器来连接硬件
- 将服务器托管的Web应用程序连接到本地Web套接字
- 在 Joomla 3.3.6 中,单击会导致服务器连接重置
- 如何将sql服务器连接到我的Javascript游戏
- Socket.IO:重新连接导致服务器连接代码运行两次
- jQuery mobile:在页面导航期间,当建立服务器连接时,下一个页面的样式将应用于当前页面
- C/SSL/JQuery.ajax() 客户端 - >服务器连接重置,但发送了 1 个字节
- 将深流服务器连接到重新思考数据库实例
- 如何从节点.js Web 服务器连接到数据库服务器
- 用于 PhoneGap 的 JavaScript 代码的 XMPP 服务器连接
- 从不同服务器连接socket.io时出错
- webrtc通过websocket客户端/服务器连接问题
- 将javascript与本地主机服务器连接,但页面由其他服务器提供
- 关于构建服务器连接android应用程序的建议
- Nodejs服务器连接
- 当内联javascript执行时,web浏览器是否保持web服务器连接?
- 如何以可维护的方式使用React和Redux thunk处理服务器/连接异常