ServiceStack服务器端事件错误

时间:2017-05-15 23:02:03

标签: servicestack eventsource

尝试解决问题,但无法理解为何会出现此类错误。

我在cosole Google Chrome中收到此错误:EventSource的响应的MIME类型(" text / html")不是" text / event-stream"。中止连接。

public class Item {
    public int Index { get; set; }
    public int Value { get; set; }
}

public class DataRetModel {        
    public List<Item> Items { get; set; }
    public Item Item { get; set; }        
}

ServerEvents.NotifySession(user.SessionId, new DataRetModel{...init...});

感谢您的帮助!

.........

在使用Fidler分析请求后(感谢@mythz的想法),我发现了以下内容: 如果您在一个浏览器中注销,则有2个客户端浏览器运行服务器事件的处理程序,然后另一个将获得2个事件,一个正常,另一个&#34; EventSource的响应具有MIME类型&# 34;(http status = 401)。

现在问题是,如果我发送SessionId,两个客户端都会收到所有事件?

您可以让每个用户收到他们的活动吗?

var eventSource = new EventSource(&#39; / event-stream&#39;);

客户端处理程序:

$(eventSource).handleServerEvents({
    handlers: {
       DataRetModel: function (data) {
           console.log(data);
       }
    }           
 });

1 个答案:

答案 0 :(得分:2)

  

现在问题是,如果我发送SessionId,两个客户端都会收到所有事件?

通过SessionId发送通知会将其发送给具有相同会话ID的所有客户端,如果您使用的是浏览器,则表示所有浏览器标签。

如果您只想将其发送到单个SSE订阅(即单个浏览器选项卡),则需要将其发送给客户SSE SubscriptionId,您需要将其传递到您的服务中,以便它知道在哪里发送通知。在SSE客户端建立连接后,您可以从onConnect处理程序获取subscriptionId。

相关问题