クライアントがメッセージを発行する場合、サーバーに接続されている n 個のクライアント (典型的なブラウザーなど) があります。他のすべてのクライアントはそれを表示できる必要があります。つまり、メッセージを読み取り/返信します。少し調査を行った後、OBSERVERデザインパターンが1つの可能性のある解決策であることがわかりました(間違っている可能性があります)。誰かが私を正しい方向に向けることができますか?
1 に答える
0
そのために、すぐに使えるソリューションを使用できます。これにより、スケーラビリティやセキュリティなどの多くの作業と問題が軽減されます。そして、私を信じてください。
私は Realtime.co で働いており、まさにそれを行っています。ここで例を確認してください: https://github.com/RTWWorld/pubsub-examples/tree/master/Javascript
http://www.realtime.coで無料のアカウントを取得できます。
チャンネルにサブスクライブまたはパブリッシュできる pub/sub パターンを使用します。チャンネルを購読している人は誰でも、そこで公開されているデータを受け取ります。
例としてのコードを次に示します。
<input type="text" id="mensagem" />
<input type="button" onclick="sendMessage();" value="Send" />
<div id="log"></div>
<script src="http://code.xrtml.org/xrtml-3.0.0.js"></script>
<script>
var appkey = 'YOUR_APP_KEY';
var url = 'http://ortc-developers.realtime.co/server/2.1';
var shoutbox;
xRTML.load(function(){
xRTML.Config.debug = true;
xRTML.ConnectionManager.create(
{
id: 'myConn',
appkey: appkey,
authToken: 'anything',
url: url,
channels: [
{name: 'user:channel_2'},
{name: 'user:channel_1'}
]
}).bind(
{
message: function(e) {
var log = document.getElementById('log');
log.innerHTML = log.innerHTML + '<br />' + e.message;
}
});
});
function sendMessage(){
var msg = document.getElementById('mensagem').value;
xRTML.ConnectionManager.sendMessage({
connections: ['myConn'],
channel: 'user:channel_2',
content: msg
});
}
</script>
「送信」ボタンをクリックすると、チャネル「user:channel_2」にメッセージが公開されます。このコードは「user:channel_1」と「user:channel_2」の両方にサブスクライブしているため、メッセージも受信します。この例を複数のブラウザーで開くと、すべてのブラウザーでメッセージが表示されます。
お役に立てれば。
于 2013-04-24T15:17:48.270 に答える