javascript - tutorial - socket.io chat rooms example
¿Cómo vincular el controlador de eventos de socket.io(en nodejs) a mi propio ámbito? (2)
Creo que V8 admite la función "bind ()":
this.socket.on(''connect'', this.myConnect.bind(this));
La llamada a "vincular" devolverá una función que llamará a su función de manera que esté configurada para el argumento que pase (en este caso, this
desde el contexto de la llamada a esa función "init").
editar - "bind ()" está ahí en el prototipo de función en Chrome, así que imagino que funciona bien en el nodo.
Esto es lo que puedes probar en un navegador (uno que tiene la función disponible, como Chrome):
var f = (function() { alert(this); }).bind("hello world");
f();
Estoy usando "socket.io" en mi servidor nodejs. ¿Hay alguna forma de ejecutar las funciones de eventos registradas en el alcance de mi clase / módulo (en el navegador)?
...
init: function() {
this.socket = new io.Socket(''localhost:3000''); //connect to localhost presently
this.socket.on(''connect'', this.myConnect);
},
myConnect: function() {
// "this.socket" and "this.f" are unknown
// this.socket.send({});
// this.f();
},
f: function() {
// ...
}
...
Lo he resuelto en mi contexto YUI3 con
this.socket.on(''connect'', Y.bind(this.myConnect, this));
Gracias a Pointy por la palabra "atar".