gpt4 book ai didi

java - 将 EventSource(服务器发送的事件)连接到服务器时出错

转载 作者:行者123 更新时间:2023-12-03 11:02:10 28 4
gpt4 key购买 nike

我正在尝试将 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的位置(在Servlet上我使用@WebServlet("/notify"))和?userId=123456 是我试图传递给 Servlet 的一个参数。在开发者控制台中,上述代码不会产生任何日志。但是,在服务器端,我可以看到代码确实已连接,但每当我尝试向客户端发送消息时,onmessage 函数都不会被命中。如果我删除参数并执行以下操作:

var eventSource = new EventSource("notify");

在开发者控制台中,每隔几秒我就会得到:

Connection Opened
Error

似乎一直在重复。我在这里缺少什么?

最佳答案

所以,我得出的结论是服务器发送的事件还没有完全实现。我遇到问题的原因是,在服务器端,如果没有 userId 参数,那么我会调用该方法的 return 。这将返回给客户端,警告其连接已打开。奇怪的是,无论出于何种原因,这都会导致调用 onerror 方法,然后调用 onopen 方法。不过,连接已正确打开。如果我确实提供了 userId 参数,我将保存上下文以供以后需要发送客户端信息时使用。我几乎不知道,这让客户相信它尚未连接。因此,EventSource 在收到第一条消息之前不会注册打开状态。对我来说,这似乎有点集市,我确信可能还存在一些其他问题和跨浏览器差异。因此,请远离服务器发送的事件!如果您有更多信息,请提供,谢谢。

关于java - 将 EventSource(服务器发送的事件)连接到服务器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com