Ⅰ Unity發布的WebGL在伺服器上載入超級慢,有什麼解決方法嗎
1.Resources文件夾里東西越多越慢,能弄成ab包就盡量弄成,圖片資源預知體什麼的最好別放這文件夾下。
2.建議使用brotli壓縮方式。
3.那就是伺服器做緩存機制,了解webgl文件包的應該度知道其文件格式,主要數據在build文件下我測試了很多次載入過程,發現大部分時間都是在下載和解壓.unityweb後綴的文件上,而且.unityweb這個文件永遠沒緩存過,所以在服務端加個緩存機制就成了,直接看效果吧。
雖然第一次慢但是後面就很快了,但是解壓unity壓縮包這塊也是可以優化的。
Ⅱ unity webgl socket伺服器需要修改嗎
直接用unity5打開工程就行,它會彈一個窗口提示的,畢運凳你只需要點擊確認unity就會自動給你的項目升級到5的,不過手旅之後進入工程可能會出些錯,有些插件工程升級之後可能會報錯,這個你如果改不了插件的源碼的話就只有悄圓刪了重新導入那些插件了。
Ⅲ Unity網路編程(一)常見概念
一直用Http用多了 復習一下基礎
Unity通訊一般分為2類
Http : 應用層 Unity內置的UnityWebRequest類進行通信(之前寫過一個分發器垃圾框架)用於交互量比較小
Socket:傳輸層 比較底層 實現TCP/UDP 用於頻繁的通信
這個是基於TCP 和IP傳輸不同消息
這個是三種常見的網路層次劃分
基本數據單位為幀
主要的協議:乙太網協議
基本數據單位為IP數據報;
IP協議(Internet Protocol,網際網路互聯協議)
ICMP協議(Internet Control Message Protocol,網際網路控制報文協議)
ARP協議(Address Resolution Protocol,地址解析協議)
RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)
包含的主要協議:TCP協議(Transmission Control Protocol,傳輸控制協議)、UDP協議(User Datagram Protocol,用戶數據報協議)
數據傳輸基本單位為報文
包含的主要協議:
FTP(文件傳送協議)、Telnet(遠程登錄協議)、DNS(域名解析協議)、SMTP(郵件傳送協議),POP3協議(郵局協議),HTTP協議(Hyper Text Transfer Protocol)。
分配給用戶上網使用的網際協議
目前IPv4多 比如192.168.1.1
新的IPv6(因為IPv4數量不夠分配)如3ffe:3201:1401:1280:c8ff:fe4d:db39:1984。
Internet最基本的協議
TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。
可靠的協議 通過三次握手建立的面向連接通信協議
3次握手 四次揮手 實習生常考
TCP連接建立過程(三次握手):
1.首先Client端發送連接請求報文
2.Server段接受連接後回復ACK報文,並為這次連接分配資源。
3.Client端接收到ACK報文後也向Server段發生ACK報文,並分配資源,這樣TCP連接就建立了。
TCP連接斷開過程(四次揮手):
1.Client端發起中斷連接請求(FIN報文)
2.Server端接到FIN報文後,發送ACK伺服器還有消息沒發完讓Client待命,Client端就進入FIN_WAIT,繼續等待Server端的FIN報文
3.Server端確定數據已發送完成,則向Client端發送FIN報文,
4.Client端收到FIN報文後發送ACK後進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳,Server端收到ACK後 關閉,Client等待了2MSL後依然沒有收到回復客戶端也關閉
SYN:"synchronize"請求同步標志;;ACK:"acknowledge"確認標志";FIN:"Finally"結束標志。
為什麼要三次握手?
防止因為網卡導致Sever收到多次Client請求 建立N個監聽 造成資源浪費
為什麼要四次揮手?
自己不請求直接關閉 但是伺服器還能給你發數據 伺服器浪費資源 而且客戶端也會強行接收
使用TCP的協議:FTP(文件傳輸協議)、Telnet(遠程登錄協議)、SMTP(簡單郵件傳輸協議)、POP3(和SMTP相對,用於接收郵件)、HTTP協議等。
面向無連接的通訊協議
UDP通訊時不需要接收方確認,屬於不可靠的傳輸 會丟包
UDP與TCP位於同一層,但它不管數據包的順序、錯誤或重發
主要用於面向查詢---應答的程序
每個UDP報文分UDP報頭和UDP數據區兩部分
UDP報頭由4個域組成,其中每個域各佔用2個位元組
(1)源埠號;
(2)目標埠號;
(3)數據報長度;
(4)校驗值。
使用UDP協議包括:TFTP(簡單文件傳輸協議)、SNMP(簡單網路管理協議)、DNS(域名解析協議)、NFS、BOOTP。
超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議
HTTP協議特點:
簡單快速 靈活 無連接 無狀態 支持B/S(瀏覽器/伺服器)及C/S(客戶端/伺服器)模式。
URL
和伺服器有一些頻繁的交互 用http時不時請求 叫輪詢 效率低下
soket可以理解為插座 插頭接上了可以保持通信
埠:
每個Socket連接都是從一台計算機網卡的一個埠連接到另外一台計算機網卡的某個埠。
IP是房子的話 埠就是門
TCP埠和UDP埠相互獨立 如TCP255埠 和UDP255埠 不沖突
周知埠
范圍從0到1023,其中80埠分配給WWW服務,21埠分配給FTP服務等。
瀏覽器的地址欄里輸入一個網址的時候是不必指定埠號的,因為在默認情況下WWW服務的埠是「80」。
網路服務是可以使用其他埠號的 比如 網址:8080
但是有些系統協議使用固定的埠號,它是不能被改變的,比如139 埠專門用於NetBIOS與TCP/IP之間的通信,不能手動改變。
自己開發時盡量不要使用1024之下的埠,可能會與系統埠沖突。
服務端:
創建socket對象
bind:綁定IP地址和埠
listen:開始監聽綁定的IP地址和埠,等待客戶端的連接
accept:如果有客戶端發起連接,通過accept接受連接請求,連接成功後會復制一個socket出來用於和當前接受連接的客戶端進行通信。(服務端最初創建的那個socket只是用來監聽並建立連接用的,實際和客戶端通信並不是最初的socket,而是在accept這一步會自動創建一個新的socket出來和客戶端通信。)
read/write:使用新的socket讀寫數據
close:關閉socket,如果關閉的是服務端的監聽socket,則無法接收新的連接,但是已經創建的和客戶端的連接不會被關閉。
客戶端:
創建socket對象
connect:連接服務端,連接成功後系統會自動分配埠
read/write:連接成功後,就可以進行數據的讀寫了,這里讀寫使用的socket還是第一步創建的socket對象。
close:關閉連接。
如果收到了長度為0的數據,則代表遠程socket關閉了連接。
伺服器:
創建socket對象
bind:綁定IP和埠,用於接收數據(注意這里綁定完就可以直接接收數據了,並不需要等待連接)
read/write:讀寫數據
客戶端:
創建socket對象
read/write:讀寫數據,不需要先建立連接,直接給對應的IP+埠發送數據即可。
由於沒有建立連接以及連接的保障,UDP在傳輸效率上會很高
UDP有一個功能是TCP所不具備的,那就是廣播功能(UDP可以將消息發送到在同一廣播網路上的每個主機 CS、魔獸爭霸區域網對戰)。
HTTP/HTTPS(比http更安全):小游戲 網頁 間歇性發送鏈接 偶爾延遲。
TCP長連接: 卡牌游戲 某些mmo 客戶端和伺服器都可以獨立發包 偶爾延遲
UDP:動作游戲 mmo 槍戰 客戶端和伺服器都可以獨立發包 無法接受延遲
可以混合使用你的MMO客戶端也許首先使用HTTP去獲取上一次的更新內容,然後使用UDP跟游戲伺服器進行連接。
現在也有kcp 就是tcp和udp結合 快速安全可靠
簡單直接的長連接
可靠的信息傳輸
數據包的大小沒有限制
坑多 斷線檢測、慢速客戶端響應阻塞數據包,對開放連接的各種dos攻擊,阻塞和非阻塞IO模型
丟包會有阻塞機制(一般是重發 tcp相反) 所以手機游戲ping跳1000就這個原因
只使用一個socket進行通信
快速
基於數據包構建
靈活 多種方式處理延遲
很多東西沒有要自己構建
不可靠
丟包
客戶端直接開始進行計算而不等待服務端確認是一種典型的隱藏延遲的技術(容易被抓包篡改)。
我們到底是使用TCP還是UDP取決於我們能否隱藏延遲。
比如TCP 在棋牌 卡牌游戲 卡1S無所謂 在動作游戲moba游戲就很致命
可靠的UDP/kcp和TCP不一樣,要去實現一個特殊的阻塞控制,而且還要保證可靠性,也可以使用許多支持可靠通信的UDP庫,但是庫一般為了通用會降低某種新能,自己根據項目情況寫可以發揮到極致
如果不知道用什麼就TCP
Ⅳ unity3d 做web游戲,伺服器怎麼發送模型給客戶端顯示出來
就是網頁游戲吧,客戶端訪問你 的網站網頁時會要求他安裝UNITY3D WEB插件,完了你 的 網頁(包括裡面的模型等等)就會呈現在客戶端。 叫B/S瀏覽器/客戶端模式吧
還有的 是網路游戲c/s(伺服器/客戶端)模式,客戶下載你 的 應用文件(游戲文件),裡面就 包含了 模型,客戶運行游戲,當然是 有 模型顯示了 ,
至於要顯示什麼模型?!!!!!。。。。。。。。。。。。。。。。
Ⅳ 怎麼配置linux伺服器的unity3d發布的web的沙盒安全機制
Apache 伺服器的安全特性
1、 採用選擇性訪問控制和強制性訪問控制的安全策略
從Apache 或Web的角度來講,選擇性訪問控制DAC(Discretionary Access Control)仍是基於用戶名和密碼的,強制性訪問控制MAC(Mandatory Access Control)則是依據發出請求的客戶端的IP地址或所在的域號來進行界定的。對於DAC方式,如輸入錯誤,那麼用戶還有機會更正,從新輸入正確的的密碼;如果用戶通過不了MAC關卡,那麼用戶將被禁止做進一步的操作,除非伺服器作出安全策略調整,否則用戶的任何努力都將無濟於事。
2、Apache 的安全模塊
Apache 的一個優勢便是其靈活的模塊結構,其設計思想也是圍繞模塊(Moles)概念而展開的。安全模塊是Apache Server中的極其重要的組成部分。這些安全模塊負責提供Apache Server的訪問控制和認證、授權等一系列至關重要的安全服務。
mod_access模塊能夠根據訪問者的IP地址(或域名,主機名等)來控制對Apache伺服器的訪問,稱之為基於主機的訪問控制。
mod_auth模塊用來控制用戶和組的認證授權(Authentication)。用戶名和口令存於純文本文件中。mod_auth_db和mod_auth_dbm模塊則分別將用戶信息(如名稱、組屬和口令等)存於Berkeley-DB及DBM型的小型資料庫中,便於管理及提高應用效率。
mod_auth_digest模塊則採用MD5數字簽名的方式來進行用戶的認證,但它相應的需要客戶端的支持。
mod_auth_anon模塊的功能和mod_auth的功能類似,只是它允許匿名登錄,將用戶輸入的E-mail地址作為口令。
SSL(Secure Socket Lager),被Apache所支持的安全套接字層協議,提供Internet上安全交易服務,如電子商務中的一項安全措施。通過對通訊位元組流的加密來防止敏感信息的泄漏。但是,Apache的這種支持是建立在對Apache的API擴展來實現的,相當於一個外部模塊,通過與第三方程序的結合提供安全的網上交易支持。
Apache伺服器的安全配置
Apache具有靈活的設置,所有Apache的安全特性都要經過周密的設計與規劃,進行認真地配置才能夠實現。Apache伺服器的安全配置包括很多層面,有運行環境、認證與授權設置等。Apache的安裝配置和運行示例如下:
1、以Nobody用戶運行
一般情況下,Apache是由Root 來安裝和運行的。如果Apache Server進程具有Root用戶特權,那麼它將給系統的安全構成很大的威脅,應確保Apache Server進程以最可能低的許可權用戶來運行。通過修改httpd.conf文件中的下列選項,以Nobody用戶運行Apache 達到相對安全的目的。
User nobody
Group# -1
2、ServerRoot目錄的許可權
為了確保所有的配置是適當的和安全的,需要嚴格控制Apache 主目錄的訪問許可權,使非超級用戶不能修改該目錄中的內容。Apache 的主目錄對應於Apache Server配置文件httpd.conf的Server Root控制項中,應為:
Server Root /usr/local/apache
3、SSI的配置
在配置文件access.conf 或httpd.conf中的確Options指令處加入Includes NO EXEC選項,用以禁用Apache Server 中的執行功能。避免用戶直接執行Apache 伺服器中的執行程序,而造成伺服器系統的公開化。Options Includes Noexec
4、阻止用戶修改系統設置
在Apache 伺服器的配置文件中進行以下的設置,阻止用戶建立、修改 .htaccess文件,防止用戶超越能定義的系統安全特性。AllowOveride None
Options None
Allow from all然後再分別對特定的目錄進行適當的配置。
5、改變Apache 伺服器的確省訪問特性
Apache 的默認設置只能保障一定程度的安全,如果伺服器能夠通過正常的映射規則找到文件,那麼客戶端便會獲取該文件,如http://local host/~ root/ 將允許用戶訪問整個文件系統。在伺服器文件中加入如下內容:order deny,ellow
Deny from all將禁止對文件系統的預設訪問。
6、CGI腳本的安全考慮
CGI腳本是一系列可以通過Web伺服器來運行的程序。為了保證系統的安全性,應確保CGI的作者是可信的。對CGI而言,最好將其限制在一個特定的目錄下,如cgi-bin之下,便於管理;另外應該保證CGI目錄下的文件是不可寫的,避免一些欺騙性的程序駐留或混跡其中;如果能夠給用戶提供一個安全性良好的CGI程序的模塊作為參考,也許會減少許多不必要的麻煩和安全隱患;除去CGI目錄下的所有非業務應用的腳本,以防異常的信息泄漏。
以上這些常用的舉措可以給Apache Server 一個基本的安全運行環境,顯然在具體實施上還要做進一步的細化分解,制定出符合實際應用的安全配置方案。
Apache Server基於主機的訪問控制
Apache Server默認情況下的安全配置是拒絕一切訪問。假定Apache Server內容存放在/usr/local/apache/share 目錄下,下面的指令將實現這種設置:Deny from all
Allow Override None則禁止在任一目錄下改變認證和訪問控制方法。
同樣,可以用特有的命令Deny、Allow指定某些用戶可以訪問,哪些用戶不能訪問,提供一定的靈活性。當Deny、Allow一起用時,用命令Order決定Deny和Allow合用的順序,如下所示:
1、 拒絕某類地址的用戶對伺服器的訪問權(Deny)
如:Deny from all
Deny from test.cnn.com
Deny from 204.168.190.13
Deny from 10.10.10.0/255.255.0.0
2、 允許某類地址的用戶對伺服器的訪問權(Allow)
如:Allow from all
Allow from test.cnn.com
Allow from 204.168.190.13
Allow from 10.10.10.0/255.255.0.0
Deny和Allow指令後可以輸入多個變數。
3、簡單配置實例:
Order Allow, Deny
Allow from all
Deny from www.test.com
指想讓所有的人訪問Apache伺服器,但不希望來自www.test.com的任何訪問。
Order Deny, Allow
Deny from all
Allow from test.cnn.com
指不想讓所有人訪問,但希望給test.cnn.com網站的來訪。
Apache Sever的用戶認證與授權
概括的講,用戶認證就是驗證用戶的身份的真實性,如用戶帳號是否在資料庫中,及用戶帳號所對應的密碼是否正確;用戶授權表示檢驗有效用戶是否被許可訪問特定的資源。在Apache中,幾乎所有的安全模塊實際上兼顧這兩個方面。從安全的角度來看,用戶的認證和授權相當於選擇性訪問控制。
建立用戶的認證授權需要三個步驟:
1、建立用戶庫
用戶名和口令列表需要存在於文件(mod_auth模塊)或資料庫(mod_auth_dbm模塊)中。基於安全的原因,該文件不能存放在文擋的根目錄下。如,存放在/usr/local/etc/httpd下的users文件,其格式與UNIX口令文件格式相似,但口令是以加密的形式存放的。應用程序htpasswd可以用來添加或更改程序:
htpasswd –c /usr/local/etc/httpd/users martin
-c表明添加新用戶,martin為新添加的用戶名,在程序執行過程中,兩次輸入口令回答。用戶名和口令添加到users文件中。產生的用戶文件有如下的形式:
martin:WrU808BHQai36
jane:iABCQFQs40E8M
art:FadHN3W753sSU
第一域是用戶名,第二個域是用戶密碼。
2、配置伺服器的保護域
為了使Apache伺服器能夠利用用戶文件中的用戶名和口令信息,需要設置保護域(Realm)。一個域實際上是站點的一部分(如一個目錄、文檔等)或整個站點只供部分用戶訪問。在相關目錄下的.htaccess文件或httpd.conf ( acces.conf ) 中的段中,由AuthName來指定被保護層的域。在.htaccess文件中對用戶文件有效用戶的授權訪問及指定域保護有如下指定:
AuthName 「restricted stuff」
Authtype Basic
AuthUserFile /usr/local/etc/httpd/users
Require valid-user
其中,AuthName指出了保護域的域名(Realm Name)。valid-user參數意味著user文件中的所有用戶都是可用的。一旦用戶輸入了一個有效的用戶/口令時,同一個域內的其他資源都可以利用同樣的用戶/口令來進行訪問,同樣可以使兩個不同的區域共用同樣的用戶/口令。
3、告訴伺服器哪些用戶擁有資源的訪問許可權
如果想將一資源的訪問許可權授予一組客戶,可以將他們的名字都列在Require之後。最好的辦法是利用組(group)文件。組的操作和標準的UNIX的組的概念類似,任一個用戶可以屬於一個和數個組。這樣就可以在配置文件中利用Require對組賦予某些許可權。如:
Require group staff
Require group staff admin
Require user adminuser
指定了一個組、幾個組或一個用戶的訪問許可權。
需要指出的是,當需要建立大批用戶帳號時,那麼Apache伺服器利用用戶文件資料庫將會極大地降低效率。這種情況下,最好採用資料庫格式的帳號文件,譬如 DBM資料庫格式的文件。還可以根據需要利用db格式(mod_auth_db)的數據文件,或者直接利用資料庫,如:msql(mod_auth_msql)或DBI兼容的資料庫(mod_auth_dbi)。
Ⅵ 在嗎 我遇到和您同樣的問題了 就是unity發布web 放到伺服器上的問題 請我要怎麼解決 具體的解決方法 因為
這個問題我明伏知很久就激消廳孝回到過了,http://..com/question/421011571.html 看看對你有沒有幫助!
Ⅶ 一下代碼在unity編輯器和pc包中可以正常獲取到伺服器文件,但是在webGL中會在連接是拋出錯誤「sussess」
一下代碼在unity編輯器和pc包中缺做兆可以正常獲取到伺服器文件,但是在webGL中會在連接伏租是拋出錯誤「sussess」胡滾,這種情況可以直接網路。