клиент получает данные как [объект объекта] - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь отправить некоторые объекты обратно клиенту после подключения, но каким-то образом они получают их как пустые массивы {} при отправке List<T> и как [object Object] для

. Вот мой хаб код:


public class MyHub : Hub
{
    private static readonly List<User> Users = new List<User>();

    private const string DateTimeFormat = "HH:mm:ss tt zzz";

    public async Task Join(string username, UserType usertype, string locale, CallerInfo callerInfo)
    {
        // Add the new user
        var user = Users.FirstOrDefault(e => e.Username == username);
        if (user != null)
        {
            Users.Remove(user);
        }

        Users.Add(new User
        {
            Username = username,
            ConnectionId = Context.ConnectionId,
            Type = usertype,
            Locale = locale,
            ConnectionStartTime = DateTime.Now.ToString(DateTimeFormat),
            CallerInfo = callerInfo
        });
        await SendUserListUpdate(StatusConstants.Join, usertype);
    }

    public async Task SendUserListUpdate(string status, UserType userType, string conID = "")
    {
        object[] args = { Users, status, conID == string.Empty ? Context.ConnectionId : conID, userType };
        await Clients.All.SendCoreAsync(MethodNameConstants.UpdateUserList, args);
    }
}

и вот мой код клиента:

"use strict";

var locale = 'ar-SA';
var username = 'test-user';
var usersList;


var connection = new signalR.HubConnectionBuilder().withUrl("/MyHub").withAutomaticReconnect().build();

// register listeners
connection.on('UpdateUserList',
    function(users,status, connectionId, userType) {
        usersList = users;
        console.log(users);
        console.log(usersList);
        console.log('status : '+ status);
        console.log('connection id : '+ connectionId);
    });

// join client list
connection.start().then(async function () {
    console.log('trying to join users list');
    await connection.invoke('Join',username,'guest', locale, null);
    console.log('join successful');
}).catch(function (err) { console.error(err); });

Я пытаюсь получить правильные объекты на стороне клиента, чтобы я мог обрабатывать их правильно. Я не мог понять, почему он так получен

...