Я отправил запрос pull (доступен в Ansible 2.2+), который упростит эти ситуации, добавив поддержку запроса jmespath в Ansible. В вашем случае это будет работать так:
- debug: msg="{{ addresses | json_query(\"private_man[?type=='fixed'].addr\") }}"
вернется:
ok: [localhost] => {
"msg": [
"172.16.1.100"
]
}
Я предлагаю использовать либо идентификатор соединения, связанный с каждым подключением к концентратору, либо создание групп. Примечание. Каждый GameID должен иметь свое собственное соединение с концентратором, чтобы использовать решение Id соединения.
Я предпочитаю использовать группы из личного опыта, но в любом случае это можно сделать.
public async void setGroup(string groupName){
await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
}
Чтобы создать группу в концентраторе, вам нужно будет создать метод в вашем классе хабов.
public async void setGroup(string groupName){
await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
}
Во-вторых, вам понадобится JS-функция на стороне клиента для вызова функции-концентратора.
$.connection.hub.invoke("setGroup", groupName).catch(err => console.error(err.toString()));
В вашем случае вы можете поместить свой gameID в качестве groupname
, а затем вызвать GlobalHost.ConnectionManager.GetHubContext<GameCastHub>().Clients.Groups(gameID).receiveUpdates(Newtonsoft.Json.JsonConvert.SerializeObject(model));
. Чтобы получить идентификатор соединения:
var _connectionId = $.connection.hub.id;
Затем отправьте идентификатор соединения на сервер и перейдите к использованию вызова GlobalHost.ConnectionManager.GetHubContext<GameCastHub>().Clients.Clients.Client(_connectionId).receiveUpdates(Newtonsoft.Json.JsonConvert.SerializeObject(model));
для вызова этого конкретного соединения.