服務器配置給小程序wss 免端口的詳細做法

由於公司年會要使用彈幕,又要過濾銘感詞,所有必須自己做
首先要給小程序提供 wss://xxx.com/websocket 這種沒有端口形式的
意思就是服務器這邊要使用443端口 ,也可以nginx轉發443端口 ,我這邊先記錄下使用443端口的方式

1.首先在面板上運行 fuser -k 443/tcp 殺掉該服務器的443端口
2.在nginx中的配置文件中 加入
upstream backend{
server 127.0.0.1:443;
}

·在這裏插入圖片描述
3在寶塔中建立1個站點分別綁定1個域名 這裏 xx2.com
下面文件名爲server.php 代碼監聽443端口 ,放在 xx2.com 目錄中 ,運行php server.php

<?php
 
$server = new swoole_websocket_server("0.0.0.0", 443,SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
// //配置證書文件位置
$key_dir = "/www/server/panel/vhost/cert/cwp.com";
$server->set(array(
         'work_num'=>1,
         'ssl_cert_file'=>$key_dir.'/fullchain.pem',
         'ssl_key_file' =>$key_dir.'/privkey.pem'
     )
);


$server->on('open', function (swoole_websocket_server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";//$request->fd 是客戶端id
});

$server->on('message', function (swoole_websocket_server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    //$frame->fd 是客戶端id,$frame->data是客戶端發送的數據
    //服務端向客戶端發送數據是用 $server->push( '客戶端id' ,  '內容')
    $data = $frame->data;
    foreach($server->connections as $fd){
        $server->push($fd , $data);//循環廣播
    }
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

這裏面ssl 證書只是第一次加 ,給swoole用,加完馬上在nginx裏面關掉

前端代碼
var ws_url =“wss://xx2.com/websocket”;
websocket = new WebSocket(ws_url);
前端頁面訪問xx2.com 就能握手成功 ,這裏xx2,com 不能使用https 要用http

發佈了26 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章