91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

swoole中websocket連接的案例

發布時間:2021-03-16 11:06:41 來源:億速云 閱讀:215 作者:小新 欄目:編程語言

這篇文章主要介紹swoole中websocket連接的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

首先我先介紹我的運行環境是直接放在外網服務器的,程序運行環境我就不多說了大家可以參考swoole官網,我是直接通過ip 進行訪問的,在這其中小編遇到一個坑,那就是我們讓htpp服務器或者websocket監聽的端口 必須要到服務器上開放,小編的阿里云服務器要到安全組里面去設置放行端口,出入方向都要設置。否則你會發現你通過ip:端口 是無法訪問服務器的

在這里我介紹下兩種連接websocket服務器的方法

1、通過訪問http服務器然后訪問我們的html頁面連接我們的websouket服務器,這樣我們就需要3個文件。1 http.php  2 ws.php 3 ws.html 簡單貼下我的圖,也是參考官方文檔寫的

http.php

<?php
/**
 * Created by PhpStorm.
 * User: xyj
 * Date: 18-9-9
 * Time: 下午4:31
 */

//實例化
$http_server = new swoole_http_server('0.0.0.0',9501);

//服務器配置
$http_server->set(
    [
        'enable_static_handler' => true,
        'document_root' => '/www/wwwroot/test_project/swoole',
    ]
);

$http_server->on('request',function($request ,$response){
    //print_r($request->get);
    //設置響應頭信息
    $response->cookie('xyj','hello',86400);
    //服務器返回信息
    $response->end('http_server' . json_encode($request->get));
});

$http_server->start();

ws.php

<?php
/**
 * Created by PhpStorm.
 * User: xyj
 * Date: 18-9-9
 * Time: 下午5:02
 */

//創建websocket服務器對象,監聽0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9502);

$ws->set(
    [
        'enable_static_handler' => true,
        'document_root' => '/www/wwwroot/test_project/swoole',
    ]
);
//監聽WebSocket連接打開事件
$ws->on('open', function ($ws, $request) {
    var_dump($request->fd, $request->get, $request->server);
    $ws->push($request->fd, "hello, welcome\n");
});

//監聽WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
    echo "Message: {$frame->data}\n";
    $ws->push($frame->fd, "server: {$frame->data}");
});

//監聽WebSocket連接關閉事件
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});

$ws->start();

ws.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<h2>hello swoole 測試</h2>
</body>
</html>

<script>
    var wsServer = 'ws://:9502';
    var websocket = new WebSocket(wsServer);
    websocket.onopen = function (evt) {
        websocket.send('hello swoole!!!');
        console.log("Connected to WebSocket server.");
    };

    websocket.onclose = function (evt) {
        console.log("Disconnected");
    };

    websocket.onmessage = function (evt) {
        console.log('Retrieved data from server: ' + evt.data);
    };

    websocket.onerror = function (evt, e) {
        console.log('Error occured: ' + evt.data);
    };
</script>

如果是在本地測試環境運行那么wsServer = 'ws://127.0.0.1:9502',如果是外網 那么127.0.0.1 就要改成你瀏覽器上所訪問的地址,這里的端口必須要和你websocket 服務器端口一致否則無法訪問的

準備工作做好了那么我們就開始訪問下websocket,首先在終端 運行http.php 和 ws.php, 正常情況下是這樣swoole中websocket連接的案例如果遇到錯誤一般常見的就是端口被占用,如果是swoole擴展沒裝好或者是語法錯誤,那么請在仔細的讀啃下官方文檔。

如果是端口被占用我們可以使用 lsof -i:9501 命令查看 端口信息, 在kill之前請先認真的看下 該端口是否是重要端口,不要盲目的kill 。

還有一種就是我們開啟過http.php 在關閉后 可能被占用的端口沒有及時的釋放,當我們再次php http.php的時候他也會拋出端口被占用的錯誤,這里我們可以用 這個命令 netstat -ntlp 來查看tcp監聽的端口,其父進程 kill 然后在運行就ok了,繼續使用這個命令來查看tcp端口。

走到這里我們的兩個服務器都已經開啟了 。我們就可以通過瀏覽器訪問了,在瀏覽器上輸入地址:9501 , 此時這里的端口是要個http服務器的端口一致而不是websocket的端口。

關于第二種訪問就是 我們只開啟ws.php  在瀏覽器上訪問和第一種是一樣的,但是此時的端口就要變成websocket的端口了,展示頁面和第一種是一樣的。

以上是“swoole中websocket連接的案例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滕州市| 佳木斯市| 准格尔旗| 孝昌县| 克东县| 云和县| 临澧县| 盐城市| 兰考县| 石屏县| 东阿县| 秦皇岛市| 南京市| 临夏县| 嵊州市| 綦江县| 莱阳市| 淅川县| 平谷区| 丽水市| 拉孜县| 汉中市| 集贤县| 石景山区| 涿鹿县| 广平县| 嫩江县| 灵寿县| 曲阳县| 乌苏市| 大方县| 宁远县| 湖南省| 三门县| 沈阳市| 綦江县| 榕江县| 沙坪坝区| 师宗县| 昌江| 明星|