gpt4 book ai didi

azure - 在 Azure SignalR 中无法向组发送消息

转载 作者:行者123 更新时间:2023-12-05 02:55:55 24 4
gpt4 key购买 nike

我正在使用 Azure Functions 开发 Azure SignalR。广播场景运行得非常好;但是,向群组发送消息不起作用。以下是 Azure Functions 端的代码:

以下是协商方法

@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 相同。它不会抛出任何异常,但客户端没有收到消息

最佳答案

感谢@Thiago Custodio..它成功了。问题是我没有发送 userId 作为协商的一部分。进行以下更改后;它有效:

@FunctionName("negotiate")
public SignalRConnectionInfo negotiate(
@HttpTrigger(
name = "req",
methods = { HttpMethod.POST },
authLevel = AuthorizationLevel.ANONYMOUS,
route = "{userId}/negotiate") HttpRequestMessage<Optional<String>> req,
@SignalRConnectionInfoInput(
name = "connectionInfo",
hubName = "chat",
userId = "{userId}") SignalRConnectionInfo connectionInfo) {

return connectionInfo;
}

关于azure - 在 Azure SignalR 中无法向组发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60959825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com