作者jimpop (popmij)
看板PHP
標題[請益] websocket client 端的訊息發送
時間Sun Apr 7 23:10:03 2013
我的環境是 : centOS 6.3 Apache2 PHP 5.3.x
我在另一台 SERVER(ubuntu 12.10 server) 架了 nodejs
我想這麼做...
PHP收到網頁上的觸發(訂單成立)
|(~!!)
|
PHP建立websocket傳給ubuntu 的 nodejs
|(~ok)
|
ubuntu 的 nodejs再廣撥給某個開websocket的網頁。
nodejs傳給網頁部分是屬於JS的領域(已解決).
但是就出在PHP的socket連線部分....
小弟第一次寫到有關socket的部分,不曉得網路上找到的資料自己拼湊是否有誤解@@
/*PHP CODE start*/
$socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, '192.168.1.20', '8080');
$data={"name":"add","args":["hello"]};
//不確定哪個才是正確寫法,但兩個都有分開測試~都無法
socket_send($socket, $data, strlen($data));
socket_write($socket, $data, strlen($data));
socket_close($socket);
/*PHP CODE end*/
這樣子執行。PHP有成功連線到nodejs....
但是在nodejs中完全沒看到傳來的資訊。......
原先以為會不會其實沒連線,把nodejs停止後,php也顯示連不到伺服器...
這樣表示PHP是有連線到nodejs的....
內容不曉得如何傳送@@
這個問題困惱了我好久@@
不曉得有沒有大大處理過這種問題@@...
先謝謝各位大大了@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.254.112.208
1F:→ tkdmaf:你在php直接寫json語法??? 04/07 23:55
2F:→ hSATAC:找 php 的 websocket 套件用吧...你不熟 protocol 的話... 04/08 00:02
3F:推 gpmm:用 zmq 做,不要自己刻訊息用的 socket,後面有一屁股事 XD 04/08 00:52
4F:推 gpmm:nodejs / PHP 都有 zmq 的 module / extension,非常好用 04/08 00:52
5F:→ gpmm:我們公司目前也是走 PHP - ZMQ - Nodejs 的架構 XD 04/08 00:56
6F:→ jimpop:感謝各位大大的訊息..... zmq 剛剛安裝好了~~先休息明天 04/08 03:58
7F:→ jimpop:明天繼續試............ 04/08 03:58
8F:推 mervynW:雖然說php5.3+吃json不過放進去應該不會幫你轉字串 04/08 13:23
9F:→ gpmm:如果有測出結果歡迎分享一下心得喔~ :) 04/09 01:56
先謝謝版主與其他版友的回答~~~~XD
zmq 可能功能太強大了XDD...
小弟不知道怎麼去設定傳送 websocket ....
後來~想到nodejs 與 網頁端都有用到 socket.io 這個關鍵字
於是就試著用
php socket.io 做搜尋後~~~
找到一個套件
Elephant.io
網站:
http://elephant.io/
Github :
https://github.com/Wisembly/elephant.io
發現直接引用他的後就可以傳送成功給 nodejs (感動XD)
引用範例的程式碼如下:
<?php
require( __DIR__ . '/../lib/ElephantIO/Client.php');
use ElephantIO\Client as ElephantIOClient;
$elephant = new ElephantIOClient('http://localhost:8124','socket.io', 1, false, true, true);
//連線
$elephant->init();$elephant->send(
ElephantIOClient::TYPE_EVENT, null, null,
json_encode(array('name' => 'addme', 'args' => 'jimpop'))); //傳送資料
$elephant->close(); //關閉連線
?>
這樣就可以成功傳送 websocket 的格式給nodejs了!!!!!!!!
*:小弟好像對 websocket socket.io 之類的還不是清楚...
不曉得對 socket websocket 有沒有誤解XD
再次感謝 版主與各位版友~(灑花~成功了)
※ 編輯: jimpop 來自: 111.254.112.36 (04/09 03:33)
10F:推 gpmm:是說,如果你只是要單純的傳資料,為什麼要開 socket XD 04/09 07:16
11F:→ gpmm:共用 session、寫 DB 拋標記過去應該都可以啊 XD 04/09 07:17
12F:→ gpmm:或著直上 memcache / redis 也不賴 04/09 07:18
13F:→ jimpop:XD 因為兩台SERVER是在不同地方的... 04/09 12:05
14F:→ jimpop:這次也想實驗一下即時的效果...(收到訂單馬上通知) 04/09 12:05
15F:→ jimpop:才會想到這種方法XD 版主提供的方法小弟會去研究看看 04/09 12:06
16F:→ jimpop:謝謝版主的資訊~~~!!!! 04/09 12:06