在Socket.io中使用PHP
是否有可能在客户端使用Sockets.io并与服务器上的基于PHP的应用程序进行通信? PHP甚至支持这种“长期连接”编写代码的方式吗?
我发现socket.io的所有示例代码似乎是服务器端的node.js,所以没有帮助。
这个问题可能有点迟了,但是这里是我发现的。
我不想辩论节点比php好或者不好的事实,这不是重点。
解决scheme是:我还没有find任何实施的socket.io为PHP。
但是有一些方法来实现WebSockets 。 有这个jQuery插件允许你使用Websockets,而对非支持的浏览器则是优雅的降级。 在PHP方面, 这个类似乎是PHP WS服务器最广泛使用的类。
如果你想和php一起使用socket.io这可能是你的答案!
项目网站:
elephant.io
他们也在github上:
https://github.com/wisembly/elephant.io
Elephant.io提供了一个完全用PHP编写的socket.io客户端,应该可以在项目中的任何地方使用。
这是一个简单易用的库,旨在通过socket.io和websockets为一个PHP应用程序带来一些实时function,这些function无法在完整的javascript中完成。
来自项目网站的例子(通过php与websocket服务器通信)
PHP服务器
use ElephantIO\Client as Elephant; $elephant = new Elephant('http://localhost:8000', 'socket.io', 1, false, true, true); $elephant->init(); $elephant->send( ElephantIOClient::TYPE_EVENT, null, null, json_encode(array('name' => 'foo', 'args' => 'bar')) ); $elephant->close(); echo 'tryin to send `bar` to the event `foo`';
套接字io服务器
var io = require('socket.io').listen(8000); io.sockets.on('connection', function (socket) { console.log('user connected!'); socket.on('foo', function (data) { console.log('here we are in action event and data is: ' + data); }); });
更新:2014年8月当前的socket.io v1.0网站有一个PHP的例子: – https://github.com/rase-/socket.io-php-emitter
如果你真的想使用PHP作为你的后端socket.io,这是我发现的。 两个socket.io php服务器端的替代。
https://github.com/walkor/phpsocket.io
https://github.com/RickySu/phpsocket.io
Exmaple代码为这样的第一个存储库。
use PHPSocketIO\SocketIO; // listen port 2021 for socket.io client $io = new SocketIO(2021); $io->on('connection', function($socket)use($io){ $socket->on('chat message', function($msg)use($io){ $io->emit('chat message', $msg); }); });
呃,你为什么要? 把PHP留在后端,NodeJS / Sockets做非阻塞的事情。
您可以参阅以下内容: http : //groups.google.com/group/socket_io/browse_thread/thread/74a76896d2b72ccc
就我个人而言,我已经明确表示正在倾听来自PHP的交互的端点。
例如,如果我向用户发送了一封电子邮件,我希望socket.io向用户显示一个实时通知。
想要从socket.io到php的交互,那么你可以做这样的事情:
var http = require('http'), host = WWW_HOST, clen = 'userid=' + userid, site = http.createClient(80, host), request = site.request("POST", "/modules/nodeim/includes/signonuser.inc.php", {'host':host,'Content-Length':clen.length,'Content-Type':'application/x-www-form-urlencoded'}); request.write('userid=' + userid); request.end();
认真的说,PHP是做服务器端的东西,让它与现在在这个领域没有地方的连接。 当你有websocket或者flashsocket的时候,为什么要进行长时间轮询?
对于您提到的“长期连接”,您可以使用棘轮for PHP。 这是一个基于PHP自PHP 5以来支持的Stream Socket函数构build的库。
对于客户端,您需要使用HTML5支持的WebSocket而不是Socket.io(因为您知道,socket.io只能用于node.js)。
如果你仍然想使用Socket.io,你可以试试这个方法: – find并获取socket.io.js供客户端使用 – 与Ratchet一起模拟socket.io在服务器上的工作方式
希望这可以帮助!
如果你真的想使用PHP作为WebSockets的后端,这些链接可以帮助你:
我还没有尝试过,但你应该能够使用ReactPHP和这个套接字组件 。 看起来像Node,但在PHP中。
这个怎么样 ? PHPSocketio ? 这是一个socket.io PHP服务器端的替代。 事件循环基于pecl事件扩展。 虽然到现在为止还没有尝试过。
看看这个PHP的PHP http://phptrends.com/category/70 。 或使用本地从PHP http://www.php.net/manual/en/book.sockets.php 。