un-iapp開發中少不了實作websocket通訊,在微信小程式中只支持wss進行通訊,本文章對于不了解域名決議、nodejs基礎、服務器寶塔等開發人員不太友好,文章如果不夠詳細可以給我留言,
wss和ws的區別:
WS(WebSocket )是不安全的 ,容易被竊聽,因為任何人只要知道你的ip和埠,任何人都可以去連接通訊,
WSS(Web Socket Secure)是WebSocket的加密版本,跟HTTPS一致,
在這里我使用的是寶塔面板配置wss,主要是因為Linux沒學多少,因為需要ssl證書,所以我們 先申請ssl證書,打開騰訊的ssl證書申請頁面,點擊我的證書,我們是個人選擇免費的就行了如下圖

填寫你的域名、申請郵箱,下面的都是選填

這里我們跟著推薦來就行
如果沒有自動添加決議請根據下發操作自行驗證

等待下發證書,成功了我的證書頁面里會顯示證書資訊,然后點擊下載,我的服務器使用的nginx,推薦大家都使用nginx

下載完成打開壓縮包里面會有這幾個檔案

在這里我們只有.crt和.key后綴檔案用的上,把這兩個檔案上傳到你的服務器的檔案夾中
我的檔案目錄是:根目錄/www/wwwroot/websocket
這個目錄可以自行設定,我這里存放的是node專案,如果不知道node如何使用websocket的可以在我的文章里查看node實作websocket的教程,即時通訊就這么簡單!

現在開始上代碼實作wss,代碼中要把檔案名字替換成自己的檔案,14370是服務埠,記得要在防火墻中打開,否則wss無法連接
啟動檔案(index.js)
const fs = require('fs');
// 一些配置資訊
const cfg = {
port: 14370,//啟動服務的埠
ssl_key: 'q.****.cn.key',
ssl_cert: 'q.****.cn_bundle.crt'
};
const httpServ = require('https');
const WebSocketServer = require('ws').Server; // 參考Server類
// 創建request請求監聽器
const processRequest = (req, res) => {
res.writeHead(200);
res.end('Websocket service is enabled!');
};
const app = httpServ.createServer({
// 向server傳遞key和cert引數
key: fs.readFileSync(cfg.ssl_key),
cert: fs.readFileSync(cfg.ssl_cert)
}, processRequest).listen(cfg.port);
// 實體化WebSocket服務器
const wss = new WebSocketServer({
server: app
});
// 如果有WebSocket請求接入,wss物件可以回應connection事件來處理
wss.on('connection', (wsConnect) => {
console.log('服務器已啟動,監聽中~');
wsConnect.on('message', (message) => {
console.log(`服務器接收到:${message}`);
wsConnect.send(`服務器回復: ${message}`, (err) => {
if (err) {
console.log(`服務器錯誤:${err}`);
}
});
});
});
在寶塔面板中下載PM2管理器,這個是用來掛node行程的,添加專案的地址,添加上方的啟動檔案,這時候如果啟動失敗了,可能是因為node的模塊沒有下載,把index.js的require里面的模塊都下載到本目錄下,代碼如下
npm install fs
npm install https
npm install ws

啟動成功后找一個測驗websocket連接的網站實驗一下,我這里已經連接成功了


代碼于下一篇文章分享
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/379166.html
標籤:其他
上一篇:TCP/IP 模型——物理層
下一篇:程式員的職場進階總結
