我在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客户机)吗?在
您似乎正在使用以前版本的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
选项2
^{pr2}$如果我转到你的域名wg2。azurewebsites.nl我得到以下错误:
这意味着您的服务器需要用域名响应一个
Access-Control-Allow-Origin
头。在选项3
在javascript中,您连接到
/chat
,现在您尝试连接到/deviceshub
,可能它不存在。所以改成chat
相关问题 更多 >
编程相关推荐