ASP.NET核心2.0,信号器

2024-06-01 02:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Microsoft AZURE托管的ASP.NET Core 2.0应用程序中有一个SignlaR服务器:

public class Chat : Hub
{
    public Task Send(string message)
    {
        return Clients.All.InvokeAsync("Send", message);
    }
}

我还有一个Javascript客户端:

^{pr2}$

它工作得很好,但是如何用Python脚本连接这个服务器呢? 有图书馆: https://pypi.python.org/pypi/signalr-client/0.0.6

但没用。我有个错误:

signalr/negotiate 404 (not found)

Python代码:

from requests import Session
from signalr import Connection

with Session() as session:
    #create a connection
    connection = Connection("wss://wg2.azurewebsites.net", session)

    #get chat hub
    chat = connection.register_hub("deviceshub")

    #start a connection
    connection.start()

你能用ASP.NETCore2.0提供一个工作示例(Python客户机)吗?在


Tags: fromimport服务器pypisendmessagesessionchat
3条回答

您似乎正在使用以前版本的python signal r。信号机Asp.NETCore与SignalR的早期版本不兼容,因此旧客户机将不能与新服务器一起工作(反之亦然)。在

当你得到404错误。在

signalr/negotiate 404 (not found)

在python代码中,您将连接到deviceshub

#get chat hub chat = connection.register_hub("deviceshub")

你不应该连接到聊天中心吗?在

chat = connection.register_hub("chat")

如果这没有帮助,请仔细检查请求send from python app。在

如果信号器连接成功,您应该看到一个url,如下所示

https://example.com/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22chathub%22%7D%5D&_=1522732715296

如果主机名和完整的url部分与javascript客户端中的相同,请仔细检查。在

希望这有帮助!在

我有一些建议你可以查一下:

选项1
停止使用SSL版本并检查它是否有效。因为在Javascript函数中使用ws://" + window.location.host + "/chat

wss:// to ws://

选项2
如果我转到你的域名wg2。azurewebsites.nl我得到以下错误:

^{pr2}$

这意味着您的服务器需要用域名响应一个Access-Control-Allow-Origin头。在

选项3
在javascript中,您连接到/chat,现在您尝试连接到/deviceshub,可能它不存在。所以改成chat

相关问题 更多 >