2013-07-10 10 views
6

Sto cercando di utilizzare socket.io per connettere il mio unity3d con il server node.js.Collegamento di Unity3d con Node.js

Utilizzando UnitySocketIO, sono riuscito la connessione tra client e server.

Tuttavia, il metodo On o Emit non funziona.

Qualcuno può aiutarmi con questo problema?

void Start() { 

    string socketUrl = "http://127.0.0.1:50122"; 
    Debug.Log("socket url: " + socketUrl); 

    this.socket = new Client(socketUrl); 
    this.socket.Opened += this.SocketOpened; 
    this.socket.Message += this.SocketMessage; 
    this.socket.SocketConnectionClosed += this.SocketConnectionClosed; 
    this.socket.Error += this.SocketError; 

    this.socket.Connect(); 
} 

private void SocketOpened (object sender, EventArgs e) { 
    Debug.Log("socket opened");     // i got this message 
    this.socket.On ("message", (data) => { 
     Debug.Log ("message : " + data); 
    }); 
    this.socket.Emit("join", "abc"); 
    Debug.Log("Emit done");     // i got this message 
} 

....

io.sockets.on('connection', function (socket) { 

    console.log('connect');     // i got this message 

    socket.emit('message', 'Hello World!'); 

    socket.on('join', function (id) { 
     console.log('client joined with id ' + id); 
     socket.emit('message', 'Hello ' + id); 
    }); 
}); 
+0

Hai funzionato? Lottando con questo me stesso. – Jeff

+0

Hai risolto questo alla fine? Dove hai messo i file dll di UnitySocketIO? – Nikola

+0

@Nikola, basta mettere i file dll ovunque all'interno della cartella Risorse. Quindi (per C#) aggiungi semplicemente 'using SocketIOClient;' al tuo script. Non sono sicuro di quale sia l'equivalente per javascript, ma non posso essere difficile da capire. – Harrison

risposta

2

Il vostro evento probabilmente collegato in modo sbagliato, provare in questo modo:

void Start() { 
    string socketUrl = "http://127.0.0.1:50122"; 
    Debug.Log("socket url: " + socketUrl); 

    this.socket = new Client(socketUrl); 
    this.socket.Opened += this.SocketOpened; 
    this.socket.Message += this.SocketMessage; 
    this.socket.SocketConnectionClosed += this.SocketConnectionClosed; 
    this.socket.Error += this.SocketError; 

    this.socket.On("message", (data) => { 
     Debug.Log("message: " + data); 
    }); 

    this.socket.Connect(); 
} 

E per il nodo:

io.sockets.on('connection', function(socket) { 
    console.log('client connected'); 
    socket.emit('message', 'Hello World!'); 
}); 

Oltre non consentire al cliente di decidere il proprio ID, in quanto è "hac kable "nella maggior parte dei casi. Solo il server dovrebbe prendere decisioni importanti e non client.

+0

Grazie per l'aiuto, ma il registro per 'messaggio' non viene ancora visualizzato. – user1957032

+0

Potresti voler minimizzare il tuo esempio totalmente, per facilitare il debug e scoprire come funziona, e quindi implementarlo nell'applicazione Unity. – moka