通过Web套接字传递Complex对象

时间:2018-11-12 19:09:24

标签: javascript c# websocket

使用.NetCore ...

我有一个C#服务器端代码。

它将创建一个对象列表,例如:

[Serializable]
public class  MyObject
{
    public string test { get; set;}
}

var manyOfTheseObjects = new List<MyObject>();

manyOfTheseObjects   ~  add a few records

我现在转换为ByteArray〜

var binFormatter = new BinaryFormatter();
var mStream = new MemoryStream();
binFormatter.Serialize(mStream, manyOfTheseObjects);
socket.Send(mStream.ToArray());

在JavaScript方面,我正在Web套接字上监听

ws.onopen = function (data) {
try {
    console.log("onopen");
    console.log(JSON.parse(data).result);
    $("#divConnectionStatus").html("Client connected");
    resume= 1;}
catch (err) {
    console.log(err);
    $("#divConnectionStatus").html("onopen: " + err);
}

};

我得到了错误:

SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at WebSocket.Connect.ws.onopen (LiveFeed.js:182)

我显然做错了一切...

NB

更改了此内容

var binFormatter = new BinaryFormatter();
var mStream = new MemoryStream();
binFormatter.Serialize(mStream, manyOfTheseObjects);
socket.Send(mStream.ToArray());

对此:

socket.Send( JsonConvert.SerializeObject(manyOfTheseObjects ) );

1 个答案:

答案 0 :(得分:1)

现在您已切换到JSON序列化器:您想要onmessage,而不是onopen

ws.onmessage = function (evt) {
try {
    console.log("onmessage");
    console.log(JSON.parse(evt.data).result);
    $("#divConnectionStatus").html("Message received");
    resume= 1;}
catch (err) {
    console.log(err);
    $("#divConnectionStatus").html("onmessage: " + err);
}