나는 실시간 협업 스프레드 시트 ( https://github.com/omarbenhamid/Cloudsheet/blob/master/cloudsheet.opa 여기에 소스를) 만들 수 OPA를 평가 스프레드 시트OPA에서 다른 페이지의 Network.cloud ("키")를 여러 번 호출하면 다른 구름이 반환되는 이유는 무엇입니까? 내가 보는 모든 사용자에게 업데이트를 전달하기 위해 각 스프레드 시트에 대한 Network.cloud을 만들</p> <p>나는 사람들이 스프레드 시트에 실시간으로 calloborate 할 :
는 각 셀은 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), 하나의 네트워크는 실제로 내가 찾은
유일한 해결책은 인덱스에 글로벌 가변에 저장된 연관 목록에서 내 구름입니다 "작성
clouds = Mutable.make([] : list((string,Network.network(message))))
그리고 내 클라우드를 List.assoc을 사용하여 가져오고, 필요하면 색인에 추가하십시오 (소스 코드에서 getcloud 함수 참조).
왜 Network.broadcast의 매개 변수로 Network.cloud (sheetname)를 사용하는 첫 번째 방법이 잘못 되었습니까?
그러나 멀티플 클라우드를 실제로 만들고 싶다면 최소한 특정 클라우드에 즉시 액세스 할 수있는 문자열 맵 (Network.network (message))을 사용해야합니다. – Fred
API 문서를 읽었 기 때문에 맵을 사용하지 않았습니다. 문자열 맵은 불변입니다 : 불변의 데이터 구조입니다. 내가 오해 했니? –
StringMap 또는 List를 Mutable으로 사용하는 것에 차이가 있다고 생각하지 않습니다. – Fred