hello, The game is like a multiplayer game (cards) connected to a server (supported wss), Require to have multi-socket connections (player can be in a few rooms/tables and play on all at once). Should support iOS/Android and WebGL. From what I found on the asset store is "WebSocket4Unity" to cover iOS/Android parts and "Simple WebSockets for Unity WebGL" to cover WebGL platform. Do you think those are something will work in this case? I was able to make a test on webgl and android platforms with echo-service, but can't compile iOS version (from both unity cloud and editor), I have same error: Can you please advice me what I should try first to resolve it ? What about recent Google Play's requirement to support 64-bit support? do you think these plugins need an update for that? Code (CSharp): AssemblyResolutionException: Failed to resolve assembly: 'websocket-sharp, Version=1.0.2.39547, Culture=neutral, PublicKeyToken=5660b08a1845a91e' Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name) Mono.Cecil.DefaultAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name) Mono.Cecil.MetadataResolver.Resolve (Mono.Cecil.TypeReference type) Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference type) Mono.Cecil.TypeReference.Resolve () UnityEditor.MonoAssemblyStripping.DoesTypeEnheritFrom (Mono.Cecil.TypeReference type, System.String typeName) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/MonoAssemblyStripping.cs:327) UnityEditor.MonoAssemblyStripping.CollectBlackListTypes (System.Collections.Generic.HashSet`1 typesToPreserve, IList`1 types, System.Collections.Generic.List`1 baseTypes) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/MonoAssemblyStripping.cs:308) UnityEditor.MonoAssemblyStripping.GenerateLinkXmlToPreserveDerivedTypes (System.String librariesFolder, UnityEditor.RuntimeClassRegistry usedClasses) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/MonoAssemblyStripping.cs:209) UnityEditorInternal.AssemblyStripper.RunAssemblyStripper (IEnumerable assemblies, System.String managedAssemblyFolderPath, System.String[] assembliesToStrip, System.String[] searchDirs, System.String monoLinkerPath, IIl2CppPlatformProvider platformProvider, UnityEditor.RuntimeClassRegistry rcr, ManagedStrippingLevel managedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:287) UnityEditorInternal.AssemblyStripper.StripAssemblies (System.String managedAssemblyFolderPath, IIl2CppPlatformProvider platformProvider, UnityEditor.RuntimeClassRegistry rcr, ManagedStrippingLevel managedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:216) UnityEditorInternal.IL2CPPBuilder.Run () (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:203) UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, System.Action`1 modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:35) UnityEditor.iOS.PostProcessiPhonePlayer.CrossCompileManagedDlls (BuildSettings bs, UnityEditor.iOS.ProjectPaths paths, UnityEditor.AssemblyReferenceChecker checker, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport buildReport) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/BuildPostProcessor.cs:840) UnityEditor.iOS.PostProcessiPhonePlayer.PostProcess (BuildSettings bs, UnityEditor.iOS.ProjectPaths paths, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport buildReport) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/BuildPostProcessor.cs:659) UnityEditor.iOS.PostProcessiPhonePlayer.PostProcess (PostProcessorSettings postProcessorSettings, BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/BuildPostProcessor.cs:605) UnityEditor.iOS.iOSBuildPostprocessor.PostProcess (BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/ExtensionModule.cs:48)
I fixed the issue, added proper "websocket-csharp" git sources (from there https://github.com/sta/websocket-sharp) but other questions are still active : )
No. There are a lot of details for doing secure web sockets correctly. For example, this little million dollar code snippet: Code (CSharp): #if !UNITY_WEBGL ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; #endif Also, the websocket for WebGL library that Unity3D publishes, which I've submitted fixes for, does not work unless you use a ConcurrentQueue. Also, WebGL does not correctly call into native functions in coroutines right now, so it doubly does not work right now (2018.3 series).
I have been working on a similar project with SmartFoxServer 2X. The server is very lightweight and supports regular sockets and HTTP/websockets, both with SSL/TLS. They offer lots of tools for user and room management, buddy lists, match making and you can write your server game code in Java or Javascript. I would highly recommend it, instead of a lower level solution where you have to implement all of those features yourself. Check their website: www.smartfoxserver.com