php實現websocket實時訊息推送

2023-03-19 01:30:36 字數 2366 閱讀 3037

php實現websocket實時訊息推送,供大家參考,具體內容如下

socketservice.php

<?php /**

* created by xwx

* date: 2017/10/18

* time: 14:33

*/class socketservice

if(!empty($port))

} public function service()

socket_bind($sock, $this->address, $this->port);

socket_listen($sock, $this->port);

echo "listen on $this->address $this->port ... \n";

$this->_sockets = $sock;

} public function run()

$line = trim(socket_read($newclient, 1024));

$this->handshaking($newclient, $line);

//獲取client ip

socket_getpeername ($newclient, $ip);

$clients[$ip] = $newclient;

echo "client ip: \n";

echo "client msg: \n";

} else clinet msg:",$msg,"\n";

fwrite(stdout, 'please input a argument:');

$response = trim(fgets(stdin));

$this->send($_sock, $response);

echo " response to client:".$response,"\n";}}

}} /**

* 握手處理

* @param $newclient socket

* @return int 接收到的資訊

*/public function handshaking($newclient, $line)

}$seckey = $headers['sec-websocket-key'];

$secaccept = base64_encode(pack('h*', sha1($seckey . '258eafa5-e914-47da-95ca-c5ab0dc85b11')));

$upgrade = "http/1.1 101 web socket protocol handshake\r\n" .

"upgrade: websocket\r\n" .

"connection: upgrade\r\n" .

程式設計客棧 "websocket-origin: $this->address\r\n" .

"websocket-location: ws://$this->address:$this->port/websocket/websocket\r\n".

"sec-websocket-accept:$secaccept\r\n\r\n";

return socket_write($newclient, $upgrade, strlen($upgrade));

} /**

* 解析接收資料

* @param $buffer

* @return null|string

*/public function message($buffer) else if ($len === 127) else

for ($index = 0; $index < strlen($data); $index++)

return $decoded;

} /**

* 傳送資料

* @param $newclinet 新接入的socket

* @param $msg 要傳送的資料

* @return int|string

*/public function send($newclinet, $msg)

public function frame($s)

$ns = "";

foreach ($a as $o)

return $ns;

} /**

* www.cppcns.com關閉socket

*/public function close()

}$sock = new socketservice();

$sock->run();

web.html

websocket

本文標題: php實現websocket實時訊息推送

本文地址:

PHP 實現 WebSocket 協議

下面會講解一下什麼是 websocket,以及使用 php 實現 websocket。websocket 是什麼?php 例項 應用場景 websocket 是一種網路傳輸協議,可在單個 tcp 連線上進行全雙工通訊,位於 osi 模型的應用層。websocket 使得客戶端和伺服器之間的資料交換變...

web socket實現原理

相對於http這種非持久化的協議來說,websocket協議是持久化的協議 http是一個客戶端一個求情,服務端一個響應,這是http的生命週期.而後http協議經過改進,http1.1一個請求可以接收多個響應,但是服務端不能主動發起.而websocket 是基於http協議來完成握手,服務端可以主...

websocket實現原理

聊天客服即時通訊 喜歡使用websocket來實現 舉個例子吧 使用者a 提交一條訊息為 你吃飯了沒?伺服器會存 使用者a 你吃飯了沒 當使用者b向後臺傳送請求的時候,就能從伺服器拿到使用者a給她傳送的資訊 以上就是ajax輪詢,定時器一直髮送ajax,顯然效能上不是很好,所以websockt應運而...

WebSocket實踐 實現小型移動端聊天室

websocket 是流行的資料互動方式,在學習了 websocket 後,打算使用 vue websocket mysql 來完成一個小型的移動端聊天室,簡單的實現登入 註冊 傳送訊息等操作。進一步鞏固自己對 vue 和 nodejs 的掌握。專案地址 專案採用了 啟動伺服器 npm run se...

使用WebSocket實現實時多人答題對戰遊戲

前兩章教程,我們使用websocket的基礎特性打造了一個小小聊天室,並在第二章對其進行了叢集化改造。系列教程回顧 在本文中,我將介紹如何使用websocket向實時多人答題對戰遊戲提供服務端,並詳細介紹通介面的設計。如何使用websocket實現遊戲對戰實時通訊 遊戲步驟的畫面演示和對應的webs...

websocket實現實時聊天

一 websocket 1 什麼是websoket?2 websocket事件 open socket.onopen 連線建立時觸發 message socket.onmessage 客戶端接收服務端資料時觸發 error socket.onerror 通訊發生錯誤時觸發 close socket....

實現websocket多人聊天,很簡單

http localhost 8080 chats 1 http localhost 8080 chats 1 房間號相同的人能聊天 coding utf 8 from flask import flask,render template from flask socketio import soc...

websocket實現即時聊天

看了很多人寫的關於websocket的簡單實現即時聊天 點對點 廣播方式 鼓起勇氣就想自己也寫一個,雖然只是實現了簡單的文字傳送。當然特別感謝dyncrole 大神的部落格給了我許多的啟發。嗯嗯,不太會說話,直接談細節。首先websocket協議幾個關鍵部分就是分別對應到 思路 建立連線後,進行資訊...

初探和實現websocket心跳重連

心跳重連緣由 在使用websocket過程中,可能會出現網路斷開的情況,比如訊號不好,或者網路臨時性關閉,這時候websocket的連線已經斷開,而瀏覽器不會執行websocket 的 onclose方法,我們無法知道是否斷開連線,也就無法進行重連操作。如果當前傳送websocket資料到後端,一旦...

使用websocket實現“你畫我猜”

檔案結構 package.json author license isc devdependencies 配置一些變數表達遊戲狀態 var line segment 0 var chat message 1 var game logic 2 var waiting to start 0 var ga...