Sunday, February 25, 2018

ASP .NET Core 2.0, SignalR

Leave a Comment

I have SignlaR server in ASP .NET Core 2.0 application hosted in Windows AZURE:

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

I also have client in Javascript:

<script src="scripts/signalr-client.min.js"></script> connection.on('send', data => {     console.log(data); });  connection.start()           .then(() => connection.invoke('send', 'Hello')); 

It works fine but how to connect this server in Python Script? There is library: https://pypi.python.org/pypi/signalr-client/0.0.6

But doesn't work. I have error:

signalr/negotiate 404 (not found) 

Python code:

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() 

Can you provide working sample (Python client) with ASP .NET Core 2.0?

1 Answers

Answers 1

I have some suggestions which you can check:

Option 1
Stop using the SSL version and check if it works. Because at your Javascript function you use ws://" + window.location.host + "/chat

wss:// to ws:// 

Option 2
If I go to your domain wg2.azurewebsites.nl I get the following error:

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. 

Which means your server needs to respond a Access-Control-Allow-Origin header with the domain name.

Option 3
In your javascript you connect to /chat where now you try to connect to /deviceshub maybe it does not exist. So change to chat

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment