3
aureliaフレームワークでsocket.ioを使用しようとしています。 ページをロードすると、データはソケットサーバーから取得されますが、その後はリッスンされません。Aureliaでsocket.ioを使用する方法
import io from 'socket.io-client';
var socket = io.connect('http://localhost:3000');
export class Settings {
newstate = '';
constructor() {
socket.on('users', // <- only works once (when loading the page) but doesn't listen after
function (userlist) {
this.users = userlist;
}.bind(this));
}
addstate() {
socket.emit('add state', this.newstate); // <- works flawless
this.newstate = '';
}
}
私はアウレリアが大好きですが、私はsocket.ioを統合することで失敗し続けます。
これは正解です。コンストラクタ()は、Settingsが作成されたときに一度だけ呼び出されます(シングルトンと考える)。次にactivate()は初めてビューを含む、ビューが訪問されるたびに呼び出されます。 –
正しい。ビューモデルがサーバー側から依存するすべてのデータは、activateまたはcanActivateで処理する必要があります。これにより、Promiseを返し、解決するまでviewmodelの読み込みを遅らせることができます。 –