javascript - WebSocketException: "I/O operation has been aborted" -


trying implement basic websockets channel javscript client , asp.net server. client code goes:

function connect() {     var ws = new websocket("ws://" + window.location.host + "/callback.aspx");     ws.onmessage = function (a) { alert("message"); };     ws.onopen = function (a) { alert("open"); };     ws.onerror = function (a) { alert("error"); }; } 

callback.aspx basic asp.net web page, , goes:

protected void page_load(object sender, eventargs e) {     if (httpcontext.current.iswebsocketrequest)     {         httpcontext.current.acceptwebsocketrequest(socketproc);     } }  private static async task socketproc(aspnetwebsocketcontext a) {     try     {         arraysegment<byte> buffer = new arraysegment<byte>(new byte[1024]);         while (true)         {             websocketreceiveresult res = await a.websocket.receiveasync(buffer, cancellationtoken.none);             if (a.websocket.state != websocketstate.open)                 return;         }     }     catch (exception exc)     {         debug.writeline(exc);     } } 

when try connect client, page_load invoked, socketproc invoked, receiveasync throws following exception:

system.net.websockets.websocketexception (0x800703e3): i/o operation has been aborted because of either thread exit or application request @ system.web.websockets.websocketpipe.<>c__displayclass9_0.<readfragmentasync>b__0(int32 hrerror, int32 cbio, boolean futf8encoded, boolean ffinalfragment, boolean fclose) --- end of stack trace previous location exception thrown --- @ system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task) @ system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task) @ system.web.websockets.aspnetwebsocket.<dowork>d__45`1.movenext() --- end of stack trace previous location exception thrown --- @ system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task) @ system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task) @ system.web.websockets.aspnetwebsocket.<>c__displayclass36_0.<<receiveasyncimpl>b__0>d.movenext() --- end of stack trace previous location exception thrown --- @ system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task) @ system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task) @ system.runtime.compilerservices.taskawaiter`1.getresult() @ cleanproxy.callback.<socketproc>d__2.movenext() in c:\dev\cleanmodel\cleanproxy\callback.aspx.cs:line 37 

on client, onopen fires, onerror.

if catch exception around receiveasync, websocket object comes out of closed.

what missing here? testing on windows server 2016, both in iis express , iis proper.

edit: i've been testing built-in ie, i've tried chrome , got different error. time, there's no exception, receiveasync returns object messagetype=close, closestatus=protocolerror. on client, there's error in chrome console:

websocket connection 'ws://localhost:53329/callback.aspx' failed: invalid frame header 

edit2: somehow worked http handler instead of aspx page. freaky. there's no requirement use classic asp.net, this'll now, issue remain unsolved.


Comments

Popular posts from this blog

compiler errors - Unable to compile a4tech-bloody-linux-driver on Linux Mint 18, nor Ubuntu 16.04 -

c# - AutoMapper - What's difference between Condition and PreCondition -