PHP发送消息给Node / Socket.IO服务器
我不太确定我是否以正确的方式去解决这个问题。 我想坚持使用我的Socket.IO服务器,不想在节点内创build单独的HTTP服务器。 有了这个,我可以创build一个PHP客户端,可以直接向节点Socket.IO服务器发送数据(例如:玩家从网上商店购买物品)吗?
我已经开始:
<?php class communicator { public function connect($address, $port){ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($socket){ try { socket_connect($socket, $address, $port); } catch(Exception $e){ throw new Exception($e->getMessage()); } }else{ throw new Exception('Could not create socket.'); } } ?>
套接字似乎连接到节点服务器,但我怎样才能开始直接从PHP客户端接收数据?
例如:说我使用socket_write
发送消息到服务器。 我如何通过Socket.IO获取?
希望我的问题是有道理的!
即时通讯使用http://elephant.io/用于通讯之间的PHP和socket.io,我只有时间来build立连接的问题,3或4秒完成发送数据。
<?php require( __DIR__ . '/ElephantIO/Client.php'); use ElephantIO\Client as ElephantIOClient; $elephant = new ElephantIOClient('http://localhost:8080', 'socket.io', 1, false, true, true); $elephant->init(); $elephant->emit('message', 'foo'); $elephant->close();
随着ElephantIO
的最新版本,我设法发送消息:
include_once("vendor/autoload.php"); use ElephantIO\Exception\ServerConnectionFailureException; $client = new \ElephantIO\Client(new \ElephantIO\Engine\SocketIO\Version1X('http://localhost:9000')); try { $client->initialize(); $client->emit('message', ['title' => 'test']); $client->close(); } catch (ServerConnectionFailureException $e) { echo 'Server Connection Failure!!'; }
ElephantIO还没有更新到最新的Socket.IO。
因为socket.io v0.9和v1.x是非常不同的。
这里的Socket.io v1.0: http ://socket.io/blog/introducing-socket-io-1-0/
更新:这个链接可能有帮助: https : //github.com/psinetron/PHP_SocketIO_Client