Last post Jun 22, 2016 05:26 AM by XIII
May 24, 2016 02:18 AM|codequest|LINK
1) The application is a multi-tenant SaaS application, the primary function of which is to deliver thousands completely separate real-time online discussions (high specialized), each of which will have an average of about seven participants.
==> Seems like Signalr would be very suitable for this application. Any reason to question that?
2) One thing I can't see immediately is how to make the client/browser "poll" the server frequently, looking for discussion refresh/updates from other participants, particularly in this case: if the client were busy, as in "wait, don't refresh me, I'm typing"
then the client would have to be able to go "ok, I'm done now, let's see if there are any updates from other people?" The simplistic answer is have a JS polling timer on the client, but it seems like there should be a better way more organic to Signalr.
==> Or, is that a common scenario for which there are obvious answers that I can find during development?
3) My local development machine is a Dell XPS 8500. It's on Win7 Pro, because I don't want to rock the boat right now, and I have to buy a new machine next year anyway. I've got VS2013. The development team will be elsewhere. If I want to run the app
locally, do I need to upgrade to Win10 in order to use Signalr? I've heard there's a workaround for using Signalr on Win7, however, I'm not that technical.
May 24, 2016 06:39 AM|XIII|LINK
how to make the client/browser "poll" the server frequently, looking for discussion refresh/updates from other participants, particularly in this case: if the client were busy, as in "wait, don't refresh me, I'm typing" then the client would have to be able
to go "ok, I'm done now, let's see if there are any updates from other people?" The simplistic answer is have a JS polling timer on the client
That's how you would do it with ajax. SignalR builds on top of websockets (with fallback scenarios) that enables duplex communication so you don't need to poll anymore. When on the server a message is spread it's sent to the clients/browsers that are subscribed
to it. The de facto code sample for SignalR is a chat client without the need for polling.
On the supported Windows versions, 7 is included:
If you want to use the full websockets feature of SignalR, so no fallback scenarios, you'll need IIS 8 or IIS 8 Express.
May 25, 2016 05:43 AM|Fei Han - MSFT|LINK
SignalR could be used to add "real-time" web functionality to our ASP.NET application, "real-time" web functionality is the ability to have server code push content to connected clients and update clients UI instantly as it becomes available without refreshing
the web page.
Besides, both Windows 7 and Windows 10 support SignalR, as
XIII said, you could check “Supported Platforms” to get more information.
Jun 21, 2016 09:22 PM|codequest|LINK
Thanks for the input. On the the question of "client polling" versus "server push", I still am not clear on what happens if the client is "busy" (like processing an input) or "paused" (like "please don't update me right now, the user is looking at something
that they don't want changed").
it goes back to the queue.
==> Is that approximately how the technology works?
Then there could perhaps also be a "business logic" queue where Signalr messages could be left, to be processed with the "paused" state ended.
However, I'm having a hard time getting away from the idea that the client needs a little timer to keep checking if it should do something.
==> Does anyone know of any sources for design patterns that might provide insights around this?
Jun 22, 2016 05:26 AM|XIII|LINK
the timer principle was indeed needed with ajax to check every now and then. SignalR is an implementation on top of websockets which makes that the communication channel stays open and is bidirectional. It adds a lot of others stuff like making it easy to
It's up to your code to process incoming signals from the server side when they get pushed (like showing a popup or updating data). It's been a while since I opened this sample but I found it a nice one: