Nor*_*isz 7 python signalr asp.net-core
我在Windows AZURE中托管的ASP .NET Core 2.0应用程序中有一个SignlaR服务器:
public class Chat : Hub
{
public Task Send(string message)
{
return Clients.All.InvokeAsync("Send", message);
}
}
Run Code Online (Sandbox Code Playgroud)
我也有Javascript客户端:
<script src="scripts/signalr-client.min.js"></script>
connection.on('send', data => {
console.log(data);
});
connection.start()
.then(() => connection.invoke('send', 'Hello'));
Run Code Online (Sandbox Code Playgroud)
它工作正常,但如何在Python脚本中连接此服务器?有图书馆:https: //pypi.python.org/pypi/signalr-client/0.0.6
但是不起作用.我有一个错误:
signalr/negotiate 404 (not found)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
你能提供ASP .NET Core 2.0的工作样本(Python客户端)吗?
您正在使用的python库似乎是针对SignalR的早期版本.SignalR for Asp.NET Core与之前版本的SignalR不兼容,因此旧客户端无法与新服务器一起使用(反之亦然).
我有一些建议你可以检查一下:
选项 1
停止使用 SSL 版本并检查其是否有效。因为在你的 Javascript 函数中你使用ws://" + window.location.host + "/chat
wss:// to ws://
Run Code Online (Sandbox Code Playgroud)
选项 2
如果我转到您的域 wg2.azurewebsites.nl 我收到以下错误:
Failed to load https://wg2.azurewebsites.net/deviceshub: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://wg2.azurewebsites.net' is therefore not allowed access. The response had HTTP status code 404.
Run Code Online (Sandbox Code Playgroud)
这意味着您的服务器需要响应Access-Control-Allow-Origin带有域名的标头。
选项 3
在您的 javascript 中,您连接到/chat现在您尝试连接的位置,/deviceshub也许它不存在。所以改成chat
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |