unity3d websocket

来源:互联网 发布:网络彩票8月最新消息 编辑:程序博客网 时间:2024/06/06 11:04

http://www.unityin.com/2012/02/unity-web-socket-security!/


Unity中编写的Socket,如果要在Web平台使用,可能会遇到Socket Security的问题,这是因为Unity在3.0後加入了Security Sandbox,在Socket连接前会先对Port843发送一个请求封包,当收到该封包正确回应後,才可正常使用Socket,否则会显示以下异常:

System.Security.SecurityException: Unable to connect, as no valid crossdomain policy was found.

解决步骤:

Step1:

请先至安装Unity的目录底下取得官方提供的 Socket Policy Server,以供接收向 Port 843 传递的请求封包,并且给予适当的回应。

X:Program FilesUnityEditorDataToolsSocketPolicyServersockpol.exe

Step2:

Windows:请开启「命令提示字元」,并切换到 Step1 的目录,键入sockpol –all即可执行Socket Policy Server。Unity3D教程手册

Linux(ubuntu):请开启「终端机」,并切换到档案所在位置,键入sudo mono sockpol –all即可执行Socket Policy Server。

注:–all 为socket policy server的参数,代表的好像是监听全部的Port,其它参数可参考Step1 目录下的 sockpol.cs。

Step3:


上述两个步骤完成後,接着就是在Socket连接之前,使用Security.PrefetchSocketPolicy( ip, port ); 这个 API,即可正常在Web平台上使用Socket。

注:参数 ip 即为Socket Policy Server开启所在的ip位址,参数port即为843。

注:若为跨平台的制作专案,请将此API依照平台利用define隔开,避免其他平台执行时的异常问题。Unity3D教程手册

原文作者:BricL

曾任职台湾某游戏公司研发Game Engine,为书籍“OGRE入门指南”译者,专攻Rendering技术与游戏开发,目前为独立团队CocosPlay主程式


0 0
原创粉丝点击