【Unity】UnityPlayer的Socket策略文件(跨網域)

在web應用上,使用Flash或是Unity都會碰到跨網域的問題。
而跨網域,在這二個程式語言裡面都有一個標準的規範。
使用「策略文件」( cross-domain.xml ) 來解決這個安全性的問題。
策略文件當初的設置原因是為了安全性。
以Unity的流程來說,在webplayer這端,會像伺服器發出請求(預設端口843)
然後伺服器會回給webplayer一個策略文件。
之後webplayer就可以實作跨網域的部分,而不會導致程式崩潰。
這次由於專案需求,
需要使用到Unity Webplayer的Socket功能
所以會需要使用到策略文件
以下是一個簡單快速成功使用跨網域的方式。
(只測試過使用在windos平台上。)
(一)下載策略文件伺服器 (Socket Policy File Server)
下載連結:https://socketpolicyfile.codeplex.com/
(1)安裝
將Socket Policy File Server v1.0安裝到作業系統上,
安裝與使用的方法
請參照https://socketpolicyfile.codeplex.com/wikipage?title=Installation%20Guide&referringTitle=Home
(2)確認服務是否有被開啟
與安裝完後,確認服務裡面的狀態是否顯示啟動。

(3)確認防火牆與路由器是否有開啟port843
由於策略文件是通過port843來與伺服器進行溝通。
伺服器主機的843port要確定是否有設定開啟,
以及你自己的外的路由器也要有開啟
(二)修改策略文件
下載完的策略伺服器,預設會放在C:\Program Files (x86)\Socket Policy File Server

然後找到SocketPolicyFile.xml
將裡面的內容更換
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"> | |
<allow-access-from domain="*" to-ports="*" /> | |
</cross-domain-policy> |
目前的設定是所有都可以進行連接,如果有特殊需求的話可以再自行查訊如何使用。
(三)修改Unity Client端

在程式碼加入下面這行
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#if UNITY_WEBPLAYER | |
Security.PrefetchSocketPolicy(目標IP, Convert.ToInt32(843),6000); | |
#endif |
之後發佈成Webplayer,就能正常地使用Socket功能了。
張貼留言