看板 PHP 關於我們 聯絡資訊
我的環境是 : 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
tkdmaf:你在php直接寫json語法??? 04/07 23:55
hSATAC:找 php 的 websocket 套件用吧...你不熟 protocol 的話... 04/08 00:02
gpmm:用 zmq 做,不要自己刻訊息用的 socket,後面有一屁股事 XD 04/08 00:52
gpmm:nodejs / PHP 都有 zmq 的 module / extension,非常好用 04/08 00:52
gpmm:我們公司目前也是走 PHP - ZMQ - Nodejs 的架構 XD 04/08 00:56
jimpop:感謝各位大大的訊息..... zmq 剛剛安裝好了~~先休息明天 04/08 03:58
jimpop:明天繼續試............ 04/08 03:58
mervynW:雖然說php5.3+吃json不過放進去應該不會幫你轉字串 04/08 13:23
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)
gpmm:是說,如果你只是要單純的傳資料,為什麼要開 socket XD 04/09 07:16
gpmm:共用 session、寫 DB 拋標記過去應該都可以啊 XD 04/09 07:17
gpmm:或著直上 memcache / redis 也不賴 04/09 07:18
jimpop:XD 因為兩台SERVER是在不同地方的... 04/09 12:05
jimpop:這次也想實驗一下即時的效果...(收到訂單馬上通知) 04/09 12:05
jimpop:才會想到這種方法XD 版主提供的方法小弟會去研究看看 04/09 12:06
jimpop:謝謝版主的資訊~~~!!!! 04/09 12:06