小编Jam*_*ell的帖子

每个应用程序应该只有一个EventSource对象吗?

当使用服务器发送事件时,客户端应该建立多个连接以接收它感兴趣的不同事件,或者是否应该有单个连接并且客户端通过单独的通道指示它感兴趣的内容?IMO后者似乎更为可取,尽管有些人可能会使客户端代码更复杂.规范支持命名事件(与特定主题相关的事件),对我来说,建议将Server-Sent Events连接用作所有事件的单个通道.

以下代码说明了启动多个服务器发送事件连接的第一个方案:

var EventSource eventSource1 = new EventSource("events/topic1");
eventSource1.addEventListener('topic1', topic1Listener, false);

var EventSource eventSource2 = new EventSource("events/topic2");
eventSource2.addEventListener('topic2', topic2Listener, false);
Run Code Online (Sandbox Code Playgroud)

eventSource1将收到"topic1"事件,eventSource2将收到"topic2"事件.虽然这很简单,但对于您感兴趣的每个主题都会出现挂起的GET,效率也非常低.

替代方案如下:

var EventSource eventSource3 = new EventSource("/events?id=1234")
eventSource3.addEventListener('topic3', topic3Listener, false);
eventSource3.addEventListener('topic4', topic4Listener, false);

var subscription = new XMLHttpRequest();
subscription.open("PUT", "/events/topic3?id=1234", true);
subscription.send();
Run Code Online (Sandbox Code Playgroud)

在此示例中,将存在单个EventSource,并且特定事件的兴趣将由具有服务器发送事件连接的单独请求指定,并且注册由id参数相关联.topic3Listener将收到"topic3"事件,而topic4Listener则不会.虽然需要稍多的代码,但好处是只进行一次连接,但事件仍然可以被识别和处理不同.

Web上有一些示例显示命名事件的使用,但似乎事先已知事件名称(或主题),因此客户端无需注册服务器(示例).虽然我还没有看到显示多个EventSource对象的示例,但我还没有看到一个示例显示客户端使用单独的请求来注册对特定主题的兴趣,正如我上面所做的那样.我对规范的解释使我相信,表明对某个主题(或事件名称)的兴趣完全取决于开发人员,并且可以通过客户知道它将要接收的事件的名称来静态地完成它.动态地与客户端警告服务器它有兴趣接收特定事件.

我很想听听别人对这个话题的看法.注意:我通常是Java开发人员,所以请原谅我平庸的JS代码.. :)

javascript html5 push http server-sent-events

12
推荐指数
1
解决办法
1926
查看次数

无法通过OpsCenter添加节点

尝试通过OpsCenter 5.0.1添加节点时,我得到以下内容

The Ec2Snitch is being used by this cluster. Provisioning nodes using this endpoint_snitch is not supported at this time.
Run Code Online (Sandbox Code Playgroud)

这似乎违背了这里给出的指示.

cassandra opscenter datastax

5
推荐指数
1
解决办法
381
查看次数