by Satinder Grewal | back
running go grpc server separate process
made a test gRPC client using flutter’s official desktop shell/engine to test if it connects with the gRPC server and responds
but using iOS/Android simulator the same works without issue. the same flutter client code connects with the network gRPC server and gets response fine
flutter-go desktop engine just doesn’t execute since it doesn’t seem to have official gRPC plugin support, and I guess the same is the case with the flutter’s official desktop shell/engines
this is sad actually :frowning:
I have to think again what to do next
Flutter for desktop is so in early stages many of the required plugins and features are yet being worked on
I think I picked Flutter for Desktop way too early :neutral_face:
same code working for iOS as expected
so with the current setup, that means I can not build a desktop app based on flutter, but only iOS and Android app
where I was targeting desktop app
I can keep going forward and forget about desktop app till the support arrives for desktop shell properly, but then the setup will divide as:
Shurli-Server (Golang code) = which will run the Shurli gRPC server serving and managing the cryptocurrency wallets and the subatomic API calls etc.
Mobile Shurli Apps (iOS/Android - Flutter code) = These will only be client applications, directly communicating with the Shurli-Server. Requiring no heavy bundling of either wallets or subatomic swaps etc.
Or I stop the effort using flutter and target the Desktop user base using old programming stack of Golang+HTML+Js+CSS+Bootstrap
Which way I go now :neutral_face: ?
will think about it….
any advise and suggestions are very welcome
CC @mylo_SH @ca333 @SHossain @jl777c
Shurli-Server will need to be setup by each user. I can make it happen with easy scripts etc too. Can use my old tricks from SuperMESH for making Shurli-Server kind of a seamless setup, and since it’ll be all in golang it’s like making a micro-service. I doubt I’ll hit big blocking things this way… :thinking:
The challenge will arrive with the Flutter mobile app, where the user will have to connect to the server, and in case the server is behind NAT in home network, the passthrough has to be cleared. I have some ideas but I was thinking to get back to these after I had desktop apps done. but if I go this route, I’ll first has to make sure this is sorted.
Or on second thought I can again put this task on lower priority and just think of letting each user setup their own Shurli-server on a cloud or public IP server/node which is directly accessible to mobile clients.
This is the only part which on quick thought seems a bit challenge, considering the non-tech users will be unable to solve it without tech support. coz it involves a bit hands on with a user’s router if Shurli-server has to be setup at home node behind NAT.
okay, I also add the idea here I had in mind for possible solution:
To connect the mobile app needs the latest public IP from user’s home network where Shurli-Server is sitting behind NAT. For such scenarios routers and other services such as DynamicDNS etc are used which keeps record of dynamic public IP linked to a DNS record, and this DynamicDNS setup is usually either setup on any home device like laptop/desktop etc or just directly in the router, keep pinging the dynamic dns and update the public IP.
So, instead of using a centralised service of using dynamic DNS I could just cut it by utilising the pubkey based record, like keeping the state update of the dynamic public IP of home network, and push and update of it’s change with new IP as a transaction with OP_RETURN data including this IP info. Since user will be sending this transaction to self it’s only a network fee expense, and on mobile, nSPV could be used to fetch this latest info and use the latest IP to send request to connect to.
still a raw idea/thought
- for the port, I could try using UPNP with the Shurli-Server and make it dynamically open the port on router, but in actually I have never tried this idea in code. so if I’ll do it now, it’ll be first time for me. just need to try, test and verify, and see if it succeeds. If works, I guess it might be solved too :thinking: has to try first….
tried flutter web again with different test case, failed
tried flutter macos agai with different test case, failed
tried hover/flutter-go with different test case, worked!
proceeding with hover/flutter-go Desktop shell based client desktop app