remoteAddress},{$conn->resourceId},'{$topic->getId()}')\n"; $this->subscribedTopics[$topic->getId()] = $topic; } /** * @param string ZeroMQから受信したJSON化された文字列 */ public function onBlogEntry($entry) { echo "onBlogEntry():\n"; $entryData = json_decode($entry, true); // トピック探索オブジェクトがセットされていない場合、公開する相手はありません if (!array_key_exists($entryData['category'], $this->subscribedTopics)) { return; } $topic = $this->subscribedTopics[$entryData['category']]; // そのカテゴリを購読している全てのクライアントにデータを再送信します $topic->broadcast($entryData); echo json_encode($entryData)."\n"; } public function onUnSubscribe(ConnectionInterface $conn, $topic) { echo "onUnSubscribe({$conn->remoteAddress},{$conn->resourceId})\n"; } public function onOpen(ConnectionInterface $conn) { echo "onOpen({$conn->remoteAddress},{$conn->resourceId})\n"; } public function onClose(ConnectionInterface $conn) { echo "onClose({$conn->remoteAddress},{$conn->resourceId})\n"; } public function onCall(ConnectionInterface $conn, $id, $topic, array $params) { echo "onCall({$conn->remoteAddress},{$conn->resourceId})\n"; // このアプリケーションでは、クライアントがデータを送信する場合、それはユーザーがコンソールでハッキングしたためです $conn->callError($id, $topic, 'You are not allowed to make calls')->close(); } public function onPublish(ConnectionInterface $conn, $topic, $event, array $exclude, array $eligible) { echo "onPublish({$conn->remoteAddress},{$conn->resourceId})\n"; // このアプリケーションでは、クライアントがデータを送信する場合、それはユーザーがコンソールでハッキングしたためです $conn->close(); } public function onError(ConnectionInterface $conn, \Exception $e) { echo "onError({$conn->remoteAddress},{$conn->resourceId})\n"; } }