跳到主要內容

精選

遊戲伺服器2025年初架設與研究part11-Websocket與Unity的登入+聊天室精簡版

 那先前使用Websocket的內容經過一段時間研究 也算是有了一些進展 並且先前也有人對於websocket那篇筆記一次講的內容有點太多,會不好理解 導致可能中途就遭遇了一些BUG比較難解決的 那這次就把相關的內容進行了一些精簡 讓大家可以更快速的架設好websocket的內容 當然這邊也可以當作是不同的使用方式 隨著學習各種不同的資訊,也能更清楚地理解這些其實是不同的使用方式。 因此,這方面完全可以多學幾種,以便因應各種不同的情況。 首先是 Unity 專案的準備 我們必須把常用的 Websocket 插件準備好(Unity) https://github.com/endel/NativeWebSocket 這是較多人使用的 Websocket 插件 可以根據Github那邊寫的資訊進行操作 匯入 到Unity專案內 那我這邊也直接提供方式 首先在你的Unity專案中,上方的選單選擇Window 底下選到 Package Manager 打開Package Manager 點選有URL的選項( Install package from git URL ) 接著請在這個URL框內輸入對應的內容 也就是 https://github.com/endel/NativeWebSocket.git#upm 輸入好之後就點擊最右邊的install安裝就好了 安裝好會如圖這樣我們可以看到 Native WebSockets 插件會在這個位置 如果需要更新,可以在右邊的選單點Update即可 這樣在Unity內就可以使用Websocket相關的語法了 接著我們回到伺服器的地方,也就是我們的 Ubuntu server 首先確保在虛擬環境當中進行安裝 websocket 插件 簡單的確認方式就是看現在輸入的位置前方有無 (venv) 確認好之後可以進行安裝pip install websockets 接著請在想要執行的位置新增一個python檔案(.py) 我這邊是在自己電腦的python專案內新增了一個python檔案main.py 內容如下 import asyncio import websockets import json co...

遊戲伺服器2025年初架設與研究part4透過服務功能(service)自動啟用腳本/架站-支援開機啟動

 那先前我們已經測試過程式碼已經可以順利運行


也就是在伺服器的對應虛擬環境中,已經可以順利的透過python3 yourfile.py來執行

執行後也沒有看到錯誤,並且透過瀏覽器瀏覽設定好的網域


應該就能從對應的資料庫中看到資料被寫入

那以我使用PostgreSQL的資料庫來看

這邊也提供一個可以遠端查看資料庫的方式

不過這邊也要提醒一下,如果有安全性考量,記得要設計的嚴謹一些

畢竟資料庫也是遊戲中相當重要的一環,跟SSH連線一樣需要相當程度的保護

避免被駭入的準備還是相當重要的~

例如只接受內網連線等等,以下這個就是指定8080的內網,可以根據需要調整

sudo ufw allow from 192.168.1.0/24 to any port 8080


而這邊使用遠端查看DB的方式也就選用PostgreSQL官方提供的pgadmin


這個可以去官網上下載,可以根據自己的系統選擇版本下載

那想查詢表格的話,可以在sql輸入區域輸入



SELECT * FROM public.test_logs

ORDER BY id ASC 

當然表格名稱要打自己的

就可以看到寫入到table的資料了

那確定這個python檔案確實正確執行後,我們接下來就可以來測試將這個腳本當作網站部屬起來


並且我們通常都會希望能伺服器一開機就自動啟用這種功能(如同伺服器開機就啟動遊戲伺服器功能)


那我們需要先建立一個服務檔案,例如以下這樣,當然檔名可以自己取

sudo nano /etc/systemd/system/myapp.service


接下來內容如以下範例


[Unit]

Description=My Python App

After=network.target


[Service]

ExecStart=/home/user/appname/venv/bin/gunicorn --bind 127.0.0.1:8000 main:app

WorkingDirectory=/home/yourname/myproject

Restart=always

User=yourname

Group=your_group_name

Environment="PATH=/home/user/appname/venv/bin"


[Install]

WantedBy=multi-user.target


內容中雖然可以打註解,並且註解是用#

那這邊要注意註解不能直接加在字後面

例如前面有After=network.target 你直接在後面打#這表示服務要在網路後啟動

這樣打會有問題,得換行打註解

當然這部分我只是根據測試結果說明一下,也許詳細有更複雜的規則

所以只是提醒不能直接在後面打#+註解

那主要這執行也包含了要使用虛擬環境來啟用,所以如果沒有用虛擬環境的話這邊寫法會稍微有一些不同,這邊要注意一下

修改完記得ctrl+O按Enter存檔,接著crtl+X退出

接下來可以手動啟用一下測試看看有沒有問題

sudo systemctl start myapp.service

啟用後可以透過以下這個確認狀態,或是是否有log印出來

sudo systemctl status myapp.service

那如果沒問題,接下來就可以設置開機自動啟用了

sudo systemctl enable myapp.service

在這邊輸入

sudo systemctl daemon-reexec

或是

sudo systemctl daemon-reload

可以重新加載(修改完可以輸入)

接下來這個類網站的功能就成功可以自動啟用了

並且跟先前不同,先前如果用python打指令啟用的話會占用你的SSH輸入(並且ctrl+C可以中止)

那現在就不會看到任何訊息,而且不會占用SSH了,就可以繼續實作其他功能,或是其它網站了,並做其它測試了

當然如果怕忘了先前有啟用的服務,也可以手動檢查

例如使用

ls /etc/systemd/system/

找一下那些.service的檔案

這次就先分享到這邊

主要這個功能就已經可以讓我們伺服器有基本的自動重啟的能力了

如有疑問也歡迎詢問,並且有需要指證的地方也歡迎~






留言