信号器返回模型对象

时间:2015-09-04 00:33:01

标签: json return signalr

故事是,我有ROOM模型课。我想使用Signalr返回json。可能吗 ?如果是,我该如何使用它?

PS:我知道我不会向客户退回房间。

public List<RoomModel> GetRooms()
        {
            GameUser user = _gameService.GetUserByClientId(Context.ConnectionId);

        var room = _gameService.GetAllowedRooms(user).Select(r => new RoomModel
        {
            Name = r.Name,
            Count = 0,
            Private = r.Private,
            Closed = r.Closed,
        }).ToList();

        return room;
    }

1 个答案:

答案 0 :(得分:4)

当您将对象发送到客户端时,SignalR会自动序列化您的对象。 (我假设你的客户端是javascript。)

正如您在this example中看到的那样,他们正在发送click_map.targetable复杂对象,以便在javascript中处理。序列化全部自动化。

如果您的示例中的方法是集线器方法,我建议您以不同方式结束它。您可能会调用客户端事件,而不是返回值。所以:

ShapeModel

查看有关从集线器方法here进行呼叫的详细信息。

然后是javascript客户端:

public class RoomHub : Hub {
    public void GetRooms() {
        List<Room> rooms = new List<Room>();
        rooms.Add( new Room{ Name = "Room1", Count = 12, Closed = true, Private = false});
        rooms.Add( new Room{ Name = "Room2", Count = 20, Closed = false, Private = true});

        // sending a list of room objects
        Clients.Client(Context.ConnectionId).roomInfo(rooms);
    }
}

// Room class (your complex object)
public class Room
{
    public string Name { get; set; }
    public int Count { get; set; }
    public bool Private { get; set; }
    public bool Closed { get; set; }
}

在我的浏览器控制台上:

enter image description here