unity3d websocket

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主程式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值