作者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