将SSE发送给特定客户

时间:2017-02-03 12:10:02

标签: javascript polling long-polling server-sent-events

我有一个网络应用程序,其中教师创建一个类,并能够上传材料并将学生添加到课程中。学生还可以加入特定教师的课程并下载任何上传的资料。

当教师将材料上传到特定课程时,会将服务器发送事件发送到每个连接的客户端,并从客户端执行检查以查明此事件是否与客户端有关。这是代码示例:

let eventSource = new EventSource(url);
eventSource.onmessage = function(event){
  if(joinedClasses.indexOf(event.data.class) !== -1){
    //notify the user.
  }
  //else just discard the message.
}

我想知道这是否是正确的方法,或者我应该使用(长)轮询或其他方法。感谢。

2 个答案:

答案 0 :(得分:0)

根据您的后端结构,您可以尝试使用3种不同的方法:

1)将用户ID作为GET参数发送,这样您就可以为每个用户提供特定的流。

2)另一种方法是在服务器端有不同的事件,然后客户端只会监听与它们相关的事件。

3)如果您没有数据库,也可以在某些情况下使用会话。

答案 1 :(得分:0)

我已经使用查询字符串作为keys来实现。您可能会看到一个最小的示例here