Передача сложного объекта через веб-сокеты - PullRequest
0 голосов
/ 12 ноября 2018

Использование .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, которую я слушаю в веб-сокете:

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 голосов
/ 12 ноября 2018

Теперь, когда вы переключаетесь на сериализатор 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...