在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在服务器上的工作方式

希望这可以帮助!

我还没有尝试过,但你应该能够使用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