WS Sync'ing stops over multiple clients


#1

Hi,

I’m sending a considerable amount of data over WS in a Noodl Model/Collection and sync’ing it between clients. At some point the Noodl clients (other than the client who’s sending the data) just stop updating(receiving?) sync’ing the data. The Sender client is still updating itself, but not the other clients.

Data is sent multiple times (20-60) times / second. It’s not a crazy amount of it.

What are the limitations for data transfer between clients? I’m not sure if this is particularly a Noodl thing, but I’ve tried other methods of sending the data and it seems to go through, so I’m not blaming the wifi connectivity just yet.

My next experiment is to limit the data transfer to around 1-2 times/second and see if that stops at some point.


#2

We have not tested updating data that fast, e.g. 20-60 times a second, as that is not the main intended use case. However I cannot think of a technical limitation that would make it break, except possibly the MQTT broker. If you could provide a simple stand alone example I would be happy to look at it.


#4

So I’ve put together a windows WS server and a noodl client example.
The Windows WS server just increases a number and sends it over port 9001.

The idea is that you open a client on one computer with the WS server running and start receiving data. Which is persisted in the Noodl protoype to other clients. The data stops updating in other clients (same wifi network computers) after some time even thought the data in the client that’s running the WS server is still updating (which I guess is not too strange). I’m curious as to why it stops updating in the other clients.

The data refresh rate is set to 30 frames/second in the c++ websockets server.

https://drive.google.com/open?id=0B80WoIPDbz8JOHJrYTk0MzRXUDA

Thanks for helping with this!

[edit] Forgot to mention that you need to tap on white background from the client with the WS data server running to start sending the data. Starting Noodl client, launching the WS executable and then tapping on white background seems to work for me to get this going. The red button clears the collection. Tap white background to start again.

I’ve also just tried it on 2 different wifi networks and the same happens. Data transfer stops fairly soon.


#5

Ping on this, if anyone could could confirm that this is a problem I’d stop looking for a culprit in the code :slight_smile:


#6

I’m hoping I can take a look today, but it might have to wait until next week.


#7

Hey All,

I’ve also uploaded a macOS executable to the same Google Drive folder. It just starts a WS server and sends data over port 9001 (a float value increasing +0.25) at 30 f/s.

Thanks!


#8

Hey!

I tried to replicate the issue:

  • I started the WS Server (Mac version)
  • I loaded the Noodl project, I tapped the background to get the first item in the collection.
  • The item is updated continiously, if I tap the background the item is “freezed” and a new one is added to the bottom. as expected.
  • I launched the preview on a browser tab and on my phone to test. All three are showing the same list of numbers with the last item in the list updating like crazy.

I’ve kept them running for a few minutes now and it seems to be working fine. Am I missing something to replicate? What is the behaviour on your end?


#9

It works if the WS server and client is running on the same machine. But a client on another machine on the same wifi freezes after some time for me (fairly quick actually) 30sec tops. I will try again this weekend on another wifi network, but I’ve already tried it on 2 and had the same issue.


#10

The client that is running the ws server should keep updating like crazy. The phone client I would expect to stop updating after some time


#11

So then I don’t see the same result here, as my phone client keeps updating nice and well.

Can you see anything in the console on the clients that stop updating? Any errors?


#12

So, trying on another wifi. The data seems to go through to a point.

1st try - 45.5
2nd try - 952
3rd try - 472
4th try - started a hotspot on phone (4g). connected with laptop, started noodl, ws server, opened a client on same computer and phone. Went to make some tea :slight_smile: both computer client (safari) and phone client (safari) got stuck at 959.

So it’s fairly random when it hangs. The first 3 tries were on a home wifi network so it’s pretty unrestricted as to blocking anything. As well as being fairly fast. I’m also trying to replicate the laptop + phone client you have mentioned, and it hangs too. Funny enough on the 3rd try I’ve launched a local client (on the same machine that ran Noodl and a WS server, I just started Safari. And data stopped refreshing in it as well as the phone, but not in the Noodl prototype. There the data refreshes constantly). I’ve also tried Chrome.

I believe this could be due to the amount of data sent over such a short period. I’m not getting any console messages on the client nor on the WS side. So I’m assuming something happens in the background. The data crashes something. But I’m not sure how to debug that at all.

I’d really appreciate it if anyone could try running this for a bit longer + different systems A few more clients perhaps.

Not even sure how to begin to debug this.


#13

I’m trying the Windows version now, and it’s up to 2200 and still running. I’ll connect a few more clients and leave it running over lunch to see if there are any issues.

Running this on Windows 10, latest stable Noodl version, and Chrome.

Edit: Now at 7600. Three Chrome browsers and one Edge instance connected.


#14

Thanks for checking this I really appreciate it!


#15

Now I had the same issue! Took about 30 minutes and four clients, but all the external clients stopped updating. I’ll try to recreate in on our dev version and see if I can debug it. Quite busy with other things at the moment so might take me some time. So don’t try to debug your network just yet :slight_smile:


#16

Phew… thanks! At least I’m not crazy :smiley:

*plugging cables back into the right sockets on the router!


#17

Hi! I was curious if you had a chance to look at this, since I still have to throttle down the data transmision as it is. Thanks!