The roStreamSocket "echo server" example contains a bug. Specifically, when the socket IDs happen to be over 8 digits long, the `Str(socket_id)` representation loses precision because it uses scientific notation. Given that subsequent connections usually have similar socket IDs, this can lead to different connections having the same stringified representation:
Brightscript Debugger> ? connection.GetID() 87031812 Brightscript Debugger> ? Str(connection.GetID()) 8.703181e+07 Brightscript Debugger> ? connection.GetID().ToStr() 87031812
Note that in the above example, the Str() result is missing the final "2" digit.
Hi @MrLlama,
Thanks for your feedback and reporting this documentation error! Where exactly in the documentation are you seeing this error? I took a look at the article, but was unable to find an instance of scientific notation (rather than the full string).
The issue isn't that the article itself uses scientific notation, it's that it fails to account for Str(some_big_number) returning a string in scientific notation. This causes a loss of precision and can cause multiple connections with different IDs to end up with the same Str(connection_id).
Thank you for clarifying! We've created a ticket with the responsible engineering team to investigate further.