Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器发送事件连接关闭或未收到数据_Javascript_C#_Asp.net - Fatal编程技术网

Javascript 服务器发送事件连接关闭或未收到数据

Javascript 服务器发送事件连接关闭或未收到数据,javascript,c#,asp.net,Javascript,C#,Asp.net,我正在尝试使用ASP.NETMVC4WebAPI控制器创建事件端点。问题是,当我尝试刷新流时,它会抛出一个异常,说: The remote host has closed the connection. 或者只是看起来客户端没有收到任何东西。即使它可以刷新写入流的数据 我首先使用该对象将StreamWriter存储在带有标识Guid的包装器中。现在我将其作为键值对存储在对象中。我不知道这是否有什么不同 客户端: <script type="text/javascript">

我正在尝试使用ASP.NETMVC4WebAPI控制器创建事件端点。问题是,当我尝试刷新流时,它会抛出一个异常,说:

The remote host has closed the connection.
或者只是看起来客户端没有收到任何东西。即使它可以刷新写入流的数据

我首先使用该对象将
StreamWriter
存储在带有标识
Guid
的包装器中。现在我将其作为键值对存储在对象中。我不知道这是否有什么不同

客户端:

<script type="text/javascript">
    var event = new EventSource('/back-end/events/tracklisting/866594c8-8411-11e4-9fcb-5254005dbd0a?juke=392fcbe5-8523-e4-9fcb-5254005dbd0a');
    event.onopen = function () {
        console.log('Onopen event fired!');
    };
    event.onmessage = function (e) {
        console.log('incoming data: ' + e.data);
    };
    event.onerror = function () {
        console.log('Event source error occurred!');
    };
</script>
并发流存储:

public static readonly ConcurrentDictionary<Guid, StreamWriter> trackListingSubscribers = new ConcurrentDictionary<Guid, StreamWriter>();

答案很简单。这是Javascript

event.onmessage = function(e) {
    //Event logic
};
不应使用。你应使用:

event.addEventListener('message', function(e) {
    //Event logic
});
event.onmessage = function(e) {
    //Event logic
};
event.addEventListener('message', function(e) {
    //Event logic
});