私はリアルタイムのコラボレーションスプレッドシート(ここではソース: https://github.com/omarbenhamid/Cloudsheet/blob/master/cloudsheet.opa)を作成するためにOPAを評価し、私は人々がスプレッドシート上でリアルタイムにcalloborateしたいOPAでは、Network.cloud( "key")への複数の呼び出しが、異なるページから異なる雲を返すのはなぜですか?
を、私は見てすべてのユーザーに最新情報を伝えるために、各スプレッドシートのためNetwork.cloudを作成したいですスプレッドシート。 keyboard_update
が、私は他の視聴者が更新されるように、スプレッドシートの雲にメッセージをブロードキャストする呼び出されると
各セルは<input type="text" onkeypress={event->keyboard_update(event,sheetname,row,column)}/>
です。しかし、ここで私の問題である:
keyboard_update(event,sheetname,row,column) = (
Network.broadcast({/*my update notif message*/}, Network.cloud(sheetname))
)
これは、新しいネットワークが各呼び出しでNetwork.cloudのさえThowさんAPIドキュメントを作成しているだけのように振る舞うと言う:
「一つまたは複数のサーバがネットワークを起動すると。
:同じ値kと雲(k)は、1つのネットワークだけが、実際に私が見つけた
唯一の解決策は、インデックスにグローバル可変に格納された連想リストの私の雲である「が作成され
clouds = Mutable.make([] : list((string,Network.network(message))))
そして、私のクラウドをList.assocを使ってフェッチし、必要に応じてインデックスに追加します(ソースコードのgetcloud関数を参照してください)。
Network.broadcastのパラメータとしてNetwork.cloud(sheetname)を使用する私の最初のアプローチはどうしてですか?
しかし、本当にマルチプルクラウドを作成したい場合は、少なくとも特定のクラウドへの即時アクセスを使用するstringmap(Network.network(message))を使用する必要があります。 – Fred
APIドキュメントを読むのでマップを使用しませんでした。文字列マップは不変です:不変のデータ構造です。私は誤解しましたか? –
StringMapまたはListをMutableとして使用することの違いはないと思います。 – Fred