2015-06-08 2 views
0

Я пытаюсь реализовать проект ClankBundle для Symfony2.
Когда я создаю функцию для вызова из js, она работает хорошо, хотя, когда я пытаюсь создать функцию onSubscribe на Symfony2, она не срабатывает, и я получаю не ошибки.
Btw, эта проверка на локальной среде работает над Ubuntu
это мой код
config.yml -ClankBundle wont fire onСоздание

clank: 
    web_socket_server: 
     port: 8080  #The port the socket server will listen on 
     host: 127.0.0.1 #(optional) The host ip to bind to 
    rpc: 
     - 
      name: "acme" #Important! this is the topic namespace used to match to this service! 
      service: "acme_hello.topic_sample_service" #The service id. 
     - 
      name: "sample" #Important! this is the network namespace used to match calls to this service! 
      service: "my_bundle.rpc_sample_service" #The service id. 

services.yml -

my_bundle.rpc_sample_service: 
     class: MyBundle\RPC\SocketService 

    acme_hello.topic_sample_service: 
     class: MyBundle\Topic\MyTopic 

MyTopic.php -

<?php 

namespace MyBundle\Topic; 

use JDare\ClankBundle\Topic\TopicInterface; 
use Ratchet\ConnectionInterface as Conn; 

class MyTopic implements TopicInterface 
{ 

    /** 
    * This will receive any Subscription requests for this topic. 
    * 
    * @param \Ratchet\ConnectionInterface $conn 
    * @param $topic 
    * @return void 
    */ 
    public function onSubscribe(Conn $conn, $topic) 
    { 
    file_put_contents('/deleteme.txt', 'onSubscribe called \n', FILE_APPEND); 
    //this will broadcast the message to ALL subscribers of this topic. 
    $topic->broadcast($conn->resourceId . " has joined " . $topic->getId()); 
    } 

    /** 
    * This will receive any UnSubscription requests for this topic. 
    * 
    * @param \Ratchet\ConnectionInterface $conn 
    * @param $topic 
    * @return void 
    */ 
    public function onUnSubscribe(Conn $conn, $topic) 
    { 
    file_put_contents('/deleteme.txt', 'onUnSubscribe called \n', FILE_APPEND); 
    //this will broadcast the message to ALL subscribers of this topic. 
    $topic->broadcast($conn->resourceId . " has left " . $topic->getId()); 
    } 


    /** 
    * This will receive any Publish requests for this topic. 
    * 
    * @param \Ratchet\ConnectionInterface $conn 
    * @param $topic 
    * @param $event 
    * @param array $exclude 
    * @param array $eligible 
    * @return mixed|void 
    */ 
    public function onPublish(Conn $conn, $topic, $event, array $exclude, array $eligible) 
    { 
    file_put_contents('/deleteme.txt', 'onPublish called \n', FILE_APPEND); 
    /* 
    $topic->getId() will contain the FULL requested uri, so you can proceed based on that 

    e.g. 

    if ($topic->getId() == "acme/channel/shout") 
     //shout something to all subs. 
    */ 


    $topic->broadcast(array(
     "sender" => $conn->resourceId, 
     "topic" => $topic->getId(), 
     "event" => $event 
    )); 
    } 

} 

код расслоение плотной -

var mysess; 
    $(document).ready(function(){ 
     var myClank = Clank.connect("ws://localhost:8080"); 

     myClank.on("socket/connect", function(session){ 
      //session is an Autobahn JS WAMP session. 
      mysess = session; 
      console.log("Successfully Connected!"); 
      //the callback function in "subscribe" is called everytime an event is published in that channel. 
      console.log('before subscribe'); 
      session.subscribe("acme/channel", function(uri, payload){ 
       console.log("Received message", payload.msg); 
      }); 
      console.log('afte subscribe') 
      session.publish('im publishing from js'); 
      mysess.publish("acme/channel", {msg: "This is a message!"}); 
//   mysess.unsubscribe("acme/channel"); 
//   mysess.publish("acme/channel", {msg: "I won't see this"}); 

     }) 

     myClank.on("socket/disconnect", function(error){ 
      //error provides us with some insight into the disconnection: error.reason and error.code 
      console.log("Disconnected for " + error.reason + " with code " + error.code); 
     }) 
    }) 

ответ

0

тема и RPC различные элементы конфигурации:

topic: 
    - 
     name: "acme" #Important! this is the topic namespace used to match to this service! 
     service: "acme_hello.topic_sample_service" #The service id. 
rpc: 
    - 
     name: "sample" #Important! this is the network namespace used to match calls to this service! 
     service: "my_bundle.rpc_sample_service" #The service id. 
Смежные вопросы