Я работаю над Azure SignalR с Azure функциями. Сценарий трансляции работает отлично; однако отправка сообщения группе не работает. Ниже приведен код со стороны Azure Функции:
Ниже приводится метод согласования
@FunctionName("negotiate")
public SignalRConnectionInfo negotiate(
@HttpTrigger(
name = "req",
methods = { HttpMethod.POST },
authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req,
@SignalRConnectionInfoInput(
name = "connectionInfo",
hubName = "chat") SignalRConnectionInfo connectionInfo) {
return connectionInfo;
}
@FunctionName("subscribeToGroup")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRGroupAction subscribeToGroup(
@HttpTrigger(
name = "req",
methods = { HttpMethod.POST },
authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req) throws Exception {
Map<String, String> requestBody = new ObjectMapper().readValue(req.getBody().get(), new TypeReference<HashMap<String, String>>() {});
return new SignalRGroupAction("add", "groupName", requestBody.get("userId")); //userId is the connectionId sent from client side
}
, после чего запускается отправка сообщения группе:
@FunctionName("sendMessageToChannel")
@SignalROutput(name = "$return", hubName = "chat")
public SignalRMessage sendMessageToChannel(
@HttpTrigger(
name = "req",
methods = { HttpMethod.POST },
authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req) throws Exception {
Map<String, String> messageContainer = new HashMap<>();
messageContainer.put("sender", "1234");
messageContainer.put("text", "Hello Group13");
SignalRMessage message = new SignalRMessage("groupChannel", messageContainer);
message.groupName = "groupName";
return message;
}
на сторона клиента; Я слушаю цель groupChannel; то есть
connection.on('groupChannel', function(message) {
console.log(message);
$("#groupMessages").append(message.text + "<br/>");
});
не уверен, что я здесь делаю неправильно. для трансляции работает отлично. Метод subscribeToGroup также не выдает никаких исключений, также как и для sendMessageToChannel. он не выдает никаких исключений, но клиент не получает сообщение