websocket-sharp: Fails to send sets of brackets.

I get this error sending the json string “{“command”:“test”,“data”:“hello”}”, most likely because of the brackets. (generated using Newtonsoft.Json)

The error:

11/8/2015 12:20:24 AM|Fatal|WebSocket.processException:1017|System.FormatException: Input string was not in a correct format. at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object[] args) at WarWorldInfServer.Logger.Log(Object message, Object[] args) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WarWorldInfServer\Logger.cs:line 42 at WarWorldInfServer.WebSockServer.Echo.OnMessage(MessageEventArgs e) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WarWorldInfServer\WebSockServer.cs:line 130 at WebSocketSharp.Server.WebSocketBehavior.onMessage(Object sender, MessageEventArgs e) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WebSocketSharp\Server\WebSocketBehavior.cs:line 323 at WebSocketSharp.Ext.Emit[TEventArgs](EventHandler`1 eventHandler, Object sender, TEventArgs e) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WebSocketSharp\Ext.cs:line 1079 at WebSocketSharp.WebSocket.<>c__DisplayClass151_0.<startReceiving>b__1(WebSocketFrame frame) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WebSocketSharp\WebSocket.cs:line 1510 11/8/2015 12:20:24 AM|Fatal|WebSocket.processException:1017|System.ObjectDisposedException: Cannot access a disposed object. Object name: ‘System.Net.Sockets.NetworkStream’. at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) at WebSocketSharp.Ext.<>c__DisplayClass47_0.<ReadBytesAsync>b__0(IAsyncResult ar) in D:\Documents\Visual Studio 2015\Projects\WarWorldInfServer\WebSocketSharp\Ext.cs:line 626

This is a very large limitation.

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 25 (7 by maintainers)

Most upvoted comments

@nug700 If so, that problem is due to webSocket.jslib.

So, in that jslib:

    ...
    socket.socket.onmessage = function (e) {
        // Todo: handle other data types?
        if (e.data instanceof Blob)
        {
            ...
        }
    };
    ...

if (e.data instanceof Blob) means that it processes only Blob binary message.

It seems that you should add (or modify it) such as the below.

    socket.socket.onmessage = function (e) {
        ...

        if (e.data instanceof ArrayBuffer)
        {
            var array = new Uint8Array(e.data);
            socket.messages.push(array);
        }

        // Or
        if (typeof e.data === "string")
        {
            var reader = new FileReader();
            reader.addEventListener("loadend", function() {
                var array = new Uint8Array(reader.result);
                socket.messages.push(array);
            });
            var blob = new Blob([e.data]);
            reader.readAsArrayBuffer(blob);
        }

        ...
    };