Search Unity

WebSockets Plugins

Discussion in 'Multiplayer' started by SplashFoxGames, Feb 4, 2019.

  1. SplashFoxGames

    SplashFoxGames

    Joined:
    Oct 10, 2012
    Posts:
    53
    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):
    1. AssemblyResolutionException: Failed to resolve assembly: 'websocket-sharp, Version=1.0.2.39547, Culture=neutral, PublicKeyToken=5660b08a1845a91e'
    2. Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters)
    3. Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name)
    4. Mono.Cecil.DefaultAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name)
    5. Mono.Cecil.MetadataResolver.Resolve (Mono.Cecil.TypeReference type)
    6. Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference type)
    7. Mono.Cecil.TypeReference.Resolve ()
    8. UnityEditor.MonoAssemblyStripping.DoesTypeEnheritFrom (Mono.Cecil.TypeReference type, System.String typeName) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/MonoAssemblyStripping.cs:327)
    9. 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)
    10. UnityEditor.MonoAssemblyStripping.GenerateLinkXmlToPreserveDerivedTypes (System.String librariesFolder, UnityEditor.RuntimeClassRegistry usedClasses) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/MonoAssemblyStripping.cs:209)
    11. 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)
    12. UnityEditorInternal.AssemblyStripper.StripAssemblies (System.String managedAssemblyFolderPath, IIl2CppPlatformProvider platformProvider, UnityEditor.RuntimeClassRegistry rcr, ManagedStrippingLevel managedStrippingLevel) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:216)
    13. UnityEditorInternal.IL2CPPBuilder.Run () (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:203)
    14. 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)
    15. 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)
    16. 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)
    17. UnityEditor.iOS.PostProcessiPhonePlayer.PostProcess (PostProcessorSettings postProcessorSettings, BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/BuildPostProcessor.cs:605)
    18. UnityEditor.iOS.iOSBuildPostprocessor.PostProcess (BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/iPhonePlayer/Extensions/Common/ExtensionModule.cs:48)
     
  2. SplashFoxGames

    SplashFoxGames

    Joined:
    Oct 10, 2012
    Posts:
    53
  3. doctorpangloss

    doctorpangloss

    Joined:
    Feb 20, 2013
    Posts:
    270
    No.

    There are a lot of details for doing secure web sockets correctly. For example, this little million dollar code snippet:

    Code (CSharp):
    1. #if !UNITY_WEBGL
    2. ServicePointManager.ServerCertificateValidationCallback +=
    3.                     (sender, certificate, chain, sslPolicyErrors) => true;
    4. #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).
     
  4. MrsPiggy

    MrsPiggy

    Joined:
    Jun 13, 2018
    Posts:
    154
    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