I am trying to run load test on my application containing signalr. When I run the application, all its requests get recorded. My app runs smoothly till this point. But when system runs my application through the recorded session then it is throwing an error on "Signalr/connect" method. It says, connectionId is invalid.
I didnt call "signalr/connect" method directly. I just called "$.connection.hub.start();" in my javascript. "connect" call is signalr internal call which is expecting a connectionId.
How can I resolve this issue?
Related
I am currently working with an webservice that gives a URL as following;
https://webservices/app.exe/wsdl/MyWeb
The responses for the type of information it is requiring is SLOW.
I don't have access to the actual application, however it would seem that is loading up the application everytime which is why it is slow.
I am wondering if I can run a seperate application that keeps a connection open to app.exe then I can pass the parameter, thus removing the need to load up the app each time and speed up the responses.
The webservice is is a SOAP endpoint.
We've inherited a .asmx web service without source code (my favourite).
We've run tests (calling it from a console app with fiddler attached) both internally and externally and it runs clean every time - as it does for the vast majority of our clients.
However, one user is reporting 5xx type errors. We've tried all the usuals (event viewer and IIS logs) but they're all clean. We can't get it to fail at all.
What further options do we have?
Can the clients replicate the error at will?
The error is most likely data related. Have you tested it with the same data that your client is to produce the error.
The error may also be at the client's end during serialization/deserialization of the call in their auto-generated asmx wrapper.
Has there been a change to the WSDL?
Things like ELMAH are great for logging all unhanded exceptions.
add logging to web config, log everything.
decompile the webservice and find the reason.
I have a web app that uses SignalR with Redis scale-out (allegedly) and hubs, and that works fine. Now I need a worker role to be able to send messages to all connected clients but I'm not sure how to do it. I also have a console application that serves as a test app which runs the methods immediately that the worker will run periodically.
Hosting a web server within the worker or console app seems odd, but that's mostly I've found so far. Talking to the web app seems odd also. Shouldn't it be able to just post a message to Redis and all the subscribers pick it up?
This is the code I'm using. I copied the UseRedis call and the handleExecutedAction pretty much verbatim from the web app. It doesn't throw or anything but the message doesn't get to the web client:
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration("...", "..."));
var hubContext = GlobalHost.ConnectionManager.GetHubContext<WebUI.EventHub>();
hubContext.Clients.All.handleExecutedAction(new Action { Type = "testing" });
I used this method (the context) after finding this page. I know the client is working because other messages come through from the web app, just nothing from the console app...
I have a SignalR web application, while i'm trying to test it with Microsoft's "Web Performance Test" everything works well until we get to the following signalR request:
"https://[Computer-name]/RMWebClient/signalr/connect"
then, the test hangs on that line and finally gets error (probably timeout).
Is it possible to send a message to the clients connected to a Hub from another process? I set up LINQPad to reference my Hub project's DLL and set VS to attach debugging to the LINQPad process. My project has a HubNotification class that uses the following code:
dynamic clients = Hub.GetClients<MyHubClass>();
clients.SendMessage("My Message");
When debugging I can see this code being called, but my connected clients never get sent a message. I have verified with Fiddler that there is nothing HTTP happening when the above code runs. Am I missing something or is this just not possible?
That call only works if you're in the same app domain. If you want to connect to the signalr service from another process/application, then you need to use a signalr client. More info here:
https://github.com/SignalR/SignalR/wiki/SignalR-Client-Hubs