2013-12-16 2 views
7

Sono nuovo di SailsJs e Socket IO. Voglio eseguire il seguente esempio Socket IO in Sailsjs. Sul lato server, ho bisogno di eseguire il seguente codice. Ma non so dove posizionare questo codice.

Sailsjs Socket IO

 
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });


Sono consapevole che posso mettere questo all'interno la funzione del cntroller ma aggiungerò ascoltatore ad ogni richiesta che non voglio.

lato client:

 


    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 

Mostrami dove inserire il codice lato server in sailsjs e mi aiuta ad eseguire quanto sopra socketIO esempio.

+3

Le modalità di attuazione sails.js tutte le sue richieste socket.io * * attraverso l'interfaccia express.js realtà . Dai un'occhiata a [qui] (http://sailsjs.org/#!documentation/sockets) per leggere come implementare i socket con Sails; mentre supportano anche i controlli Socket.io nativi, probabilmente non è il miglior punto di partenza. – brandonscript

+0

@ r3mus Sono d'accordo. Devo solo sapere dove eseguire questo codice server SOCKET.IO nativo all'interno di sailsjs. Grazie per la tua risposta. Apprezzato. – Dinesh

+1

Vorrei passare e creare un progetto di base delle vele e guardare attraverso il codice per vedere dove sono configurati i socket; TBH In realtà non ho ancora fatto nessun tipo di socket non standard con Sails. – brandonscript

risposta

6

Bene, il tuo codice suggerisce che vuoi fare qualcosa su connection.

C'è un file situato in /config/sockets.js che ha funzioni incorporate per connect e disconnect, forse lo si sta cercando.

Se non lo sei, allora vuoi metterlo in un controller "azione", se pensi più a fondo su cosa stai cercando di ottenere allora probabilmente avrai bisogno di un'azione che chiami una volta per gestire questo per te.

Se si finisce per provare il file sockets.js allora si dovrebbe avere qualcosa che assomiglia a questo

onConnect: function(session, socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
// By default: do nothing 
// This is a good place to subscribe a new socket to a room, inform other users 
// that someone new has come online, or any other custom socket.io logic 
} 
+0

Cosa succede se hai un sacco di socket.on funzioni che vuoi mettere dentro? avrà un sacco di codice all'interno di onConnect lento ogni connessione socket? C'è qualche altro posto in cui inserire questo codice? (ma non i controller) è per esempio possibile inserire questo codice in sockets.js ma al di fuori di OnConnect? – jantar

+0

@jantar, per quanto ne so, devi avere tutte le funzioni "socket.on" all'interno della funzione connect, non c'è altro modo per farlo, anche senza sails.js – iConnor

+0

@iConnor, puoi dare un'occhiata a questa domanda ? http://stackoverflow.com/questions/37129766/how-to-use-sails-io-js-version-0-11-3-in-node-server –