2017-02-19 13 views
0

私はループバックでnodejsを使うのが初めてです。私はリアルタイムのチャットアプリを作るために私のオフィスから仕事をしてきました。私の上司はfireloop.ioを使うように私に勧めます。私はいつもhttp://docs.fireloop.io/en/api/からdocを読んで成功させています。しかし、問題は、プライベートチャットルームを作成することです。私はdocの "Child References with Working"からインストゥルメンツに従いますが、メッセージを送信した後、そのメッセージはサーバーに接続されているすべてのクライアントにブロードキャストされます。私の言語のため申し訳ありませんFireloop.ioを使用したループバックプライベートチャットルーム

import { Component } from '@angular/core'; 
import { RealTime } from './shared/sdk/services'; 
import { Room, Message, FireLoopRef } from './shared/sdk/models'; 
@Component(...) 
export class AppComponent { 
    private RoomReference: FireLoopRef<Room>; 
    private MessageReference: FireLoopRef<Message>; 
    private room: Room = new Room({ name: 'FireLoop Room' }); 
    private message: Room = new Message({ text: 'Test Message' }); 
    constructor(private realTime: RealTime) { 
    this.realTime 
     .onReady() 
     .subscribe(() => 
      this.RoomReference = this.realTime.FireLoop.ref<Room>(Room) 
      this.RoomReference.upsert(this.room).subscribe((instance: Room) => { 
      // Create a Child Reference 
      this.MessageReference = RoomReference.make(instance).child<Message>('messages'); 
      this.MessageReference.on('value').subscribe(
       (messages: Array<Message>) => this.logger.info(messages) 
      ); 
       MessageReference.upsert(this.message).subscribe((res: Message) => console.log(res.text)); 
      })) 
     ); 
    } 
} 

: 私のコードは、docと同じです。 おかげ

答えて

0

は最善の方法は、アクセス制御ルールを適用することです:

  1. は公共の部屋への無制限のアクセス(あなた モデルのbooleanを使用)
  2. が所有者
  3. 用プライベートルームへのアクセスを許可する許可します
  4. ゲストのプライベートルームへのアクセスを許可する

ルール2と3のコードは次のようになります。

{ 
    "name": "Room", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "properties": { 
    "name": { 
     "type": "string" 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "user": { 
     "type": "belongsTo", 
     "model": "user", 
     "foreignKey": "ownerId" 
    }, 
    { 
    "members": { 
     "type": "hasMany", 
     "model": "user", 
     "foreignKey": "memberId" 
    } 
    }, 
    "acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    }, 
    { 
     "accessType": "READ", 
     "principalType": "ROLE", 
     "principalId": "member", 
     "permission": "ALLOW", 
     "property": "findById" 
    }, 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW" 
    } 
    ], 
    "methods": [] 
} 

お役立ちリンク:

関連する問題