Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No remote image, no cursor image and error message (Web Client - Mobile) #7667

Closed
TBG-FR opened this issue Apr 9, 2024 · 3 comments
Closed
Labels
bug Something isn't working

Comments

@TBG-FR
Copy link
Contributor

TBG-FR commented Apr 9, 2024

Bug Description

Thanks to recent modifications to RustDesk Web Client, I managed to update it successfuly to latest version, and it works like a charm on Desktop 👏 However, I then tried on an Android tablet, and it looks broken 😞

Upon connection :

  • The whole screen is grey, we can't see remote screen
  • Mouse cursor image is broken (however it moves, both on client and remote)
  • An error keeps spamming in logs, about a file not found (but this file is an UUID ?)

I guess it's all related to the Image/ImagePainter, and the logs are related to each "refresh" of the image, but I can't say for sure, and I'm struggling (logs aren't that helpful on this error, but I still included the stacktrace below)

How to Reproduce

Web Client (Desktop) to Desktop app client => OK ✅

  1. Open RustDesk Web Client on a Desktop computer (Windows), through your browser (Chrome), latest version
  2. Connect to a remote client with Desktop app (Windows), enter the password
  3. Everything is working well, you'll see the screen of the remote client, see the cursor, without errors in logs ✅

Web Client (Mobile) to Desktop app client => KO 🛑

  1. Open RustDesk Web Client on a mobile device, like a tablet (Android), through your browser (Chrome), latest version
  2. Connect to a remote client with Desktop app (Windows), enter the password
  3. Not working at all, you'll see a grey screen, with a broken image for the cursor, with errors spamming the logs 🛑

Expected Behavior

Remote Desktop should work well on mobile, as much as it works on desktop

(cc @fufesou I know you worked on the latest changes around Desktop part of the Web Client, can you provide any hints or guidance to fix the Mobile part ? I'm willing to do it, but I have hard time locating the issue... Even after reviewing both codes and your recent changes)

Operating system(s) on local side and remote side

Web Client (Linux) -> Desktop (Windows 10)

RustDesk Version(s) on local side and remote side

1.2.4 -> 1.2.3

Screenshots

Screenshot_20240409_181608_ChromeEdit

Additional Context

Browser console logs

14:52:51.787 /#/connect?id=xxxxxxxxx&pw=yyyyyyyyy:1 <meta name="apple-mobile-web-app-capable" content="yes"> is deprecated. Please include <meta name="mobile-web-app-capable" content="yes">
14:52:51.839 (index):134 New service worker available.
14:52:51.852 index.js:1 >> WebSock.onopen
14:52:51.852 index.js:1 WebSock.onopen
14:52:51.852 index.js:1 latency of remote.redacted.host.com: 105
14:52:53.828 (index):122 Installed new service worker.
14:52:54.164 initialization.dart:47 Flutter Web Bootstrap: Auto.
14:52:54.302 js_primitives.dart:42 launch args: []
14:52:54.312 js_primitives.dart:42 _globalFFI init
14:52:54.318 js_primitives.dart:42 _globalFFI init end
14:52:54.320 js_primitives.dart:42 pullAb, force: ForcePullAb.listAndCurrent, quiet: false
14:52:54.321 index.js:1 isSIMD: true
14:52:54.423 js_primitives.dart:42 registerEventHandler callback_query_onlines recent peer
14:52:54.423 js_primitives.dart:42 registerEventHandler load_recent_peers recent peer
14:52:54.457 js_primitives.dart:42 registerEventHandler callback_query_onlines recent peer
14:52:54.458 js_primitives.dart:42 registerEventHandler load_recent_peers recent peer
14:52:54.605 js_primitives.dart:42 PassArgumentsScreen with xxxxxxxxx and yyyyyyyyy (true)
14:52:54.605 js_primitives.dart:42 [mobile] onConnect with password
14:52:54.606 js_primitives.dart:42 CONNECT - isWebDesktop false -> mobile/pages/remote_page.dart
14:52:54.612 js_primitives.dart:42 Custom config applied.
14:52:54.623 js_primitives.dart:42 RemotePage (Mobile) with xxxxxxxxx and yyyyyyyyy (false)
14:52:54.623 js_primitives.dart:42 sessionAddSync xxxxxxxxx yyyyyyyyy
14:52:54.624 js_primitives.dart:42 sessionStart xxxxxxxxx no password
14:52:54.625 index.js:1 Tue Apr 09 2024 14:52:54 GMT+0200 (heure d’été d’Europe centrale): Connecting to rendezvous server: wss://remote.redacted.host.com:21118, for xxxxxxxxx
14:52:54.626 js_primitives.dart:42 Force autoconnect from RemotePage
14:52:54.693 js_primitives.dart:42 CustomTouchGestureRecognizer init
14:52:54.730 index.js:1 isSIMD: true
14:52:54.741 index.js:1 login with info.password: yyyyyyyyy
14:52:54.741 index.js:1 login end (check if login with password has been done)
14:52:54.898 index.js:1 zstd ready
14:52:54.898 index.js:1 init done
14:52:54.946 index.js:1 >> WebSock.onopen
14:52:54.946 index.js:1 WebSock.onopen
14:52:54.946 index.js:1 Tue Apr 09 2024 14:52:54 GMT+0200 (heure d’été d’Europe centrale): Connected to rendezvous server
14:52:55.082 blob:https://remote.redacted.host.com/29d7f602-93c2-4b0e-b299-2c52b79b3585:1 
        
        
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:52:55.088 index.js:1 Closing WebSocket connection
14:52:55.088 index.js:1 Tue Apr 09 2024 14:52:55 GMT+0200 (heure d’été d’Europe centrale): Got relay response
14:52:55.088 index.js:1 Tue Apr 09 2024 14:52:55 GMT+0200 (heure d’été d’Europe centrale): Connecting to relay server: wss://remote.redacted.host.com:21119
14:52:55.114 index.js:1 WebSock.onclose: 
_websocket.onclose @ index.js:1
14:52:55.114 index.js:1 CloseEvent
_websocket.onclose @ index.js:1
14:52:55.124 index.js:1 vp9 loaded
14:52:55.124 index.js:1 The decoder:  OGVDecoderVideoProxy
14:52:55.212 index.js:1 >> WebSock.onopen
14:52:55.212 index.js:1 WebSock.onopen
14:52:55.212 index.js:1 Tue Apr 09 2024 14:52:55 GMT+0200 (heure d’été d’Europe centrale): Connected to relay server
14:52:55.214 index.js:1 Failed to verify id pk,  TypeError: signedMessage is too short
    at EA (vendor.js:19:630992)
    at Object.qt [as crypto_sign_open] (vendor.js:19:702555)
    at p3 (index.js:1:1840658)
    at async ue.secure (index.js:1:1822478)
    at async ue.connectRelay (index.js:1:1822277)
    at async ue._start (index.js:1:1821874)
    at async ue.start (index.js:1:1820245)
    at async f3 (index.js:1:1840399)
secure @ index.js:1
14:52:55.214 index.js:1 Handshake failed: invalid public key from rendezvous server
secure @ index.js:1
14:52:55.263 index.js:1 msgLoop with hash Object
14:52:55.264 index.js:1 msgLoop asking for input password
14:52:55.264 js_primitives.dart:42 input-password
14:52:55.264 js_primitives.dart:42 {"name":"msgbox","type":"input-password","title":"Password Required","text":"","link":"","hasRetry":""}
14:52:55.265 index.js:1 login this._password: undefined
14:52:55.265 index.js:1 _sendLoginMessage xxxxxxxxx undefined
14:52:55.266 index.js:1 login end (check if login with password has been done)
14:52:55.748 index.js:1 login delayed for 1 second.
14:52:55.748 index.js:1 login with info.password: yyyyyyyyy
14:52:55.755 index.js:1 _sendLoginMessage xxxxxxxxx Uint8Array(32)
14:52:55.755 index.js:1 login end (check if login with password has been done)
14:52:55.835 index.js:1 msgLoop with login response Object
14:52:55.836 index.js:1 LOGIN_MSG_PASSWORD_WRONG
14:52:56.278 index.js:1 test delay:  Object
14:52:57.265 index.js:1 test delay:  Object
14:52:58.376 index.js:1 test delay:  Object
14:52:59.398 index.js:1 test delay:  Object
14:53:00.320 index.js:1 test delay:  Object
14:53:18.063 index.js:1 login with info.password: nffnpq
14:53:18.064 index.js:1 _sendLoginMessage xxxxxxxxx Uint8Array(32)
14:53:18.064 index.js:1 login end (check if login with password has been done)
14:53:18.146 index.js:1 msgLoop with login response Object
14:53:18.233 js_primitives.dart:42 CustomTouchGestureRecognizer init
14:53:18.317 index.js:1 test delay:  Object
14:53:19.471 index.js:1 test delay:  Object
14:53:19.472 blob:https://remote.redacted.host.com/643c7f73-9753-4112-879f-aa164f20e088:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:19.671 blob:https://remote.redacted.host.com/d0e2af9d-1a7e-46ec-86aa-55c8a8f1e32f:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:19.988 blob:https://remote.redacted.host.com/f0e70922-a771-4cd0-9bb0-72c3d70980b1:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:20.157 blob:https://remote.redacted.host.com/252ae5a1-9952-4fdd-b5b5-7bf11ca92165:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:20.300 blob:https://remote.redacted.host.com/7d5358f7-0642-422f-b2e7-9d046815b462:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:20.344 js_primitives.dart:42 addAllowedPointer
14:53:20.346 js_primitives.dart:42 onPointDownImage PointerDeviceKind.touch
14:53:20.383 blob:https://remote.redacted.host.com/939a621b-ebae-4cdf-af71-d3bdca80c2f3:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:20.387 index.js:1 test delay:  Object
14:53:20.686 js_primitives.dart:42 start oneFingerPan
14:53:20.914 blob:https://remote.redacted.host.com/e83e0d43-a2bf-4a33-99cd-c94aefaf21ac:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:21.282 blob:https://remote.redacted.host.com/aa5c5a21-a35e-4818-871b-1fe207a0d51f:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:21.402 blob:https://remote.redacted.host.com/5e7765fa-468b-4b1c-9e49-dacb7762bf90:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:21.411 index.js:1 test delay:  Object
14:53:21.458 js_primitives.dart:42 WARNING: updateCursorId 65541, cache is null. without notifyListeners()
14:53:21.483 blob:https://remote.redacted.host.com/9c9a4a2b-4154-4518-8fa7-7c31e0a1ba39:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:21.769 js_primitives.dart:42 ScaleGestureRecognizer onEnd
14:53:21.769 js_primitives.dart:42 TwoFingerState.pan onEnd
14:53:21.788 blob:https://remote.redacted.host.com/18059c57-5ddb-49b9-bb7f-ab0224953583:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:21.796 js_primitives.dart:42 WARNING: updateCursorId 65569, cache is null. without notifyListeners()
14:53:22.025 index.js:1 WebSock.onclose: 
_websocket.onclose @ index.js:1
14:53:22.025 index.js:1 CloseEvent
_websocket.onclose @ index.js:1
14:53:22.231 blob:https://remote.redacted.host.com/4074c5ab-d8b9-4126-87fb-5d3abc3d1077:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.276 blob:https://remote.redacted.host.com/57cf821f-789e-4cb8-8fbe-4eb42312db25:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.359 index.js:1 test delay:  Object
14:53:22.587 blob:https://remote.redacted.host.com/9d8e46ff-9599-488b-be45-3516ebf209b1:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.650 blob:https://remote.redacted.host.com/3cf2ff45-f221-4d76-b028-5b4e52d99bb8:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.666 blob:https://remote.redacted.host.com/403ab39f-f6ff-4f53-86a3-812e8298acec:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.745 blob:https://remote.redacted.host.com/bd06de86-1420-4173-870f-f469784654ba:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:22.813 index.js:1 gl: 35
14:53:22.931 blob:https://remote.redacted.host.com/778bf8cd-e658-402a-8f7a-cea43b793b18:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:23.004 blob:https://remote.redacted.host.com/f62e2db3-12d4-432c-808c-e5d7e15e3786:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:23.085 blob:https://remote.redacted.host.com/9dbd9857-6a3f-4afe-be58-765f35c3cea2:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:23.123 blob:https://remote.redacted.host.com/03efaa9d-bd92-4376-ab2b-c2fc0d7c2c60:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:23.283 index.js:1 test delay:  Object
14:53:23.419 blob:https://remote.redacted.host.com/1da11f81-a4a9-45e3-9d65-d9e44b21a2d7:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:23.468 blob:https://remote.redacted.host.com/e387dc6a-3447-426e-9f82-86079b1712e8:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:24.062 blob:https://remote.redacted.host.com/4dd6446a-013b-4082-9026-66d38c9722ff:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:24.126 blob:https://remote.redacted.host.com/b555ee32-4fa7-4cc0-8193-73fb3dfd7d0f:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:24.275 index.js:1 test delay:  Object
14:53:24.407 blob:https://remote.redacted.host.com/bbb4c1a6-6ac3-492e-a2d0-9f5de6110d7f:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:24.458 blob:https://remote.redacted.host.com/ca5260b5-ba98-4638-a2d7-be5461358422:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:24.993 blob:https://remote.redacted.host.com/34fbaf90-fd11-4aa0-832c-ec909daf0c01:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:25.043 blob:https://remote.redacted.host.com/453b0597-87e5-4b9c-a92f-d1bebe47b7f9:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:25.309 index.js:1 test delay:  Object
14:53:25.405 blob:https://remote.redacted.host.com/931d7877-e40e-4bf9-9885-cb36dd07d32e:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:25.461 blob:https://remote.redacted.host.com/eb8e9b9f-f9b7-4795-9a33-944cb4793546:1 
       Failed to load resource: net::ERR_FILE_NOT_FOUND
14:53:26.108 blob:https://remote.redacted.host.com/59a4d311-3876-403a-92bd-0286e175eeb8:1 
       GET blob:https://remote.redacted.host.com/59a4d311-3876-403a-92bd-0286e175eeb8 net::ERR_FILE_NOT_FOUND
14:53:26.273 blob:https://remote.redacted.host.com/2b717951-b251-4b63-b676-8bc619395cf6:1 
       GET blob:https://remote.redacted.host.com/2b717951-b251-4b63-b676-8bc619395cf6 net::ERR_FILE_NOT_FOUND
14:53:26.330 index.js:1 test delay:  {time: 1712667205801, from_client: false, last_delay: 81, target_bitrate: 2432}

Stacktrace of Failed to load resource: net::ERR_FILE_NOT_FOUND error : click here

GET blob:https://remote.redacted.host.com/2b717951-b251-4b63-b676-8bc619395cf6 net::ERR_FILE_NOT_FOUND
Image (async)
a2d @ dom.dart:493
SJ @ html_image_codec.dart:218
Qu @ bitmap_canvas.dart:617
q8 @ bitmap_canvas.dart:572
he @ recording_canvas.dart:1215
U7 @ recording_canvas.dart:151
atx @ recording_canvas.dart:107
H3 @ picture.dart:422
cb @ picture.dart:608
aN8 @ surface.dart:881
cb @ surface.dart:714
cb @ offset.dart:52
aN8 @ surface.dart:856
cb @ surface.dart:714
cb @ offset.dart:52
aN8 @ surface.dart:856
cb @ surface.dart:714
cb @ transform.dart:52
aN8 @ surface.dart:856
cb @ surface.dart:714
$0 @ scene_builder.dart:505
bou @ profiler.dart:41
cM @ scene_builder.dart:501
aPE @ layer.dart:1139
aQS @ layer.dart:782
VE @ binding.dart:596
VE @ binding.dart:986
aC0 @ binding.dart:457
(anonymous) @ js_helper.dart:2264
a5v @ binding.dart:1325
a5u @ binding.dart:1318
ado @ binding.dart:1255
aB0 @ binding.dart:1113
(anonymous) @ js_helper.dart:2254
tk @ platform_dispatcher.dart:1274
$1 @ platform_dispatcher.dart:248
bAT @ js_helper.dart:921
byH @ core_patch.dart:88
bYR @ js_allow_interop_patch.dart:55
(anonymous) @ js_allow_interop_patch.dart:33
requestAnimationFrame (async)
$0 @ initialization.dart:154
pr @ platform_dispatcher.dart:683
pr @ binding.dart:880
KI @ binding.dart:833
aAw @ binding.dart:873
(anonymous) @ js_helper.dart:2254
ZK @ framework.dart:2721
ep @ framework.dart:3508
aY9 @ inherited_provider.dart:577
(anonymous) @ js_helper.dart:2254
V @ change_notifier.dart:433
(anonymous) @ model.dart:1140
(anonymous) @ async_patch.dart:307
$2 @ async_patch.dart:332
p @ async_patch.dart:237
b2F @ model.dart:1119
cb @ model.dart:1119
$1 @ model.dart:1111
Fr @ zone.dart:1661
$0 @ future_impl.dart:127
GT @ future_impl.dart:875
uy @ future_impl.dart:647
eE @ async_patch.dart:202
o @ async_patch.dart:260
(anonymous) @ image.dart:55
(anonymous) @ async_patch.dart:307
$2 @ async_patch.dart:332
$1 @ async_patch.dart:283
Fr @ zone.dart:1661
$0 @ future_impl.dart:127
GT @ future_impl.dart:875
uy @ future_impl.dart:647
$0 @ future_impl.dart:721
c_A @ schedule_microtask.dart:40
c0b @ schedule_microtask.dart:49
$1 @ async_patch.dart:48
childList (async)
$1 @ async_patch.dart:61
bFc @ async_patch.dart:26
bjE @ zone.dart:1466
wC @ zone.dart:1681
atG @ future_impl.dart:720
kQ @ future_impl.dart:680
eE @ future_impl.dart:44
$1 @ js_util_patch.dart:483
Promise.then (async)
jt @ future_impl.dart:40
(anonymous) @ dom.dart:923
(anonymous) @ async_patch.dart:307
$2 @ async_patch.dart:332
p @ async_patch.dart:237
mb @ html_image_codec.dart:36
(anonymous) @ image.dart:50
(anonymous) @ async_patch.dart:307
$2 @ async_patch.dart:332
$1 @ async_patch.dart:283
Fr @ zone.dart:1661
$0 @ future_impl.dart:127
GT @ future_impl.dart:875
uy @ future_impl.dart:647
$0 @ future_impl.dart:721
c_A @ schedule_microtask.dart:40
c0b @ schedule_microtask.dart:49
$1 @ async_patch.dart:48
childList (async)
$1 @ async_patch.dart:61
bFc @ async_patch.dart:26
bjE @ zone.dart:1466
wC @ zone.dart:1681
atG @ future_impl.dart:720
kQ @ future_impl.dart:680
eE @ async_patch.dart:193
o @ async_patch.dart:260
(anonymous) @ model.dart:2358
(anonymous) @ async_patch.dart:307
$2 @ async_patch.dart:332
p @ async_patch.dart:237
EO @ model.dart:2344
$2 @ model.dart:2249
$2 @ web_model.dart:131
bAT @ js_helper.dart:926
byH @ core_patch.dart:88
bYQ @ js_patch.dart:46
(anonymous) @ js_patch.dart:438
X0 @ index.js:1
draw @ index.js:1
(anonymous) @ index.js:1
handleMessage @ ogv.js:2
(anonymous) @ ogv.js:2
@TBG-FR TBG-FR added the bug Something isn't working label Apr 9, 2024
@rustdesk
Copy link
Owner

It is under dev, guy!

@TBG-FR
Copy link
Contributor Author

TBG-FR commented Apr 10, 2024

@rustdesk I am well aware that this is under development.

That's exactly why I am opening an issue, to

  • Check what is actually working well
  • Check what is not working well
  • Try to find some guidance, to contribute and help fixing it if I can

As you said in #763

Issues is the place we organize dev

However, note that over the last few months, I asked multiple times for guidance and/or offered my help to contribute to the Web Client, telling you many people in the community would be glad to help. Never got any answer. Still, I'm glad you decided to support the Web Client again and got a guy working on it, and he's doing an awesome work.

Closing down all issues your receive and ignoring people messages won't do any good to an "Open Source" project, imo. I understand you may have a lot of messages to handle, and you try to keep this repo/issues clean and avoid issues related to build especially, but the way you handle it is not really contributor-friendly.

Guess I'll sit back and wait for you to do all the dev work then 😉

@rustdesk
Copy link
Owner

I also know it is not contributor-friendly, but I do not have time to make it friendly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants