トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   サーバ関連【CGI・FCS・XMLSocket etc】
     一対多チャットでのユーザー特定方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mild-seven
Åê¹ÆNo.1148
投稿日時: 2003-11-10 15:00
新米
居住地:
投稿: 7
使用環境:
一対多チャットでのユーザー特定方法
このフォーラムへ投稿するのははじめてですが、
サイトはいつも利用させて頂いています。

今、FCSを用いた一対多のチャットを作成しているのですが、
ユーザーの特定方法がわかりません。
おおまかには、
送信側は一名でビデオ、音声配信をしていて、
複数のユーザーが受信しています。
チャットは共有オブジェクトで全員が発言、閲覧できるようにしているのですが、これを送信側から受信側の特定一名、またその逆にプライベートメッセージを送信したいのですが、方法が不明です。
お教え頂ければ幸いです。宜しくお願いします。
植木友浩
Åê¹ÆNo.1149
投稿日時: 2003-11-10 15:39
案内係
居住地: 東京
投稿: 640
使用環境:
Pro +
.Tiger +
Re: 一対多チャットでのユーザー特定方法
各ユーザーがNetStreamクラスを使って受信状態にして、
送信するときには、その相手のNetStreamをオープンにして
メッセージを送るメソッドを定義してやればできそうです。

または、サーバー側に送信用の関数を定義して、そこから
特定のユーザーにClient.call関数を使う方法も考えられます。

実際に試していないので、うまくいくかはわかりません。

ここにあるチャットも特定のユーザーだけにメッセージを送る機能はあるんですが、特定して送るのが面倒なので、全員に送って、ユーザーIDを見て表示するかどうか判定してます。


----------------
Tomohiro Ueki
RSSリーダー公開中
チーム-10kg達成

ゲスト
Åê¹ÆNo.1151
投稿日時: 2003-11-10 17:43
Re: 一対多チャットでのユーザー特定方法
引用:
ユーザーの特定方法がわかりません。


Flash Communication Server には、ユーザーを特定する機能もそういう情報もありません。

必要であれば、自分でユーザーを特定できる情報をサーバーに残して、それを元に特定/通信する必要があります。

もちろんクライアントで、特定ユーザーを指定するのであれば、その情報はクライアント側にも必要です。

つまり、サーバー/クライアント全体で、独自のユーザー管理の仕組みが必要です。

引用:
これを送信側から受信側の特定一名、またその逆にプライベートメッセージを送信したいのですが、方法が不明です。


ユーザーが接続すると、サーバー側ではそのユーザー専用の Client オブジェクトが生成されます。

そこには、その Client オブジェクトのユーザーに対して通信を行なう「Client.call」という機能があります。

この機能を応用すれば、特定の人限定の通信が可能です。

引用:
チャットは共有オブジェクトで全員が発言、閲覧できるようにしているのですが、


この辺は、具体的にどのように作られていますか?

同じログ上に表示するという形になると、この辺の仕組みによっては既存の仕組みを変えないといけなくなる部分も出てくると思います。
mild-seven
Åê¹ÆNo.1182
投稿日時: 2003-11-12 10:09
新米
居住地:
投稿: 7
使用環境:
Re: 一対多チャットでのユーザー特定方法
ご回答ありがとうございます。
Client.callというのは具体的にどのように
使えばよろしいでしょうか?

現在チャットのほうは下記のようにしています。
FlashActionScriptバイブル「続」のほうにあったものです。

chat_nc = new NetConnection();
chat_nc.onStatus = function(infoObj) {
trace(infoObj.code);
if (infoObj.code == "NetConnection.Connect.Success") {
trace("接続しました");

} else {
trace("接続に失敗しました");
}
};
chat_nc.connect("rtmp:/sharedChat");
ゲスト
Åê¹ÆNo.1183
投稿日時: 2003-11-12 11:11
Re: 一対多チャットでのユーザー特定方法
引用:
Client.callというのは具体的にどのように使えばよろしいでしょうか?


マニュアルは読まれていますか?

Client.call の使い方も、サーバーサイド ActionScript 辞書に書かれていますよ。

引用:
FlashActionScriptバイブル「続」のほうにあったものです。


使われているサーバーのバージョンは何ですか?

上の本は改訂版は出ていないようなので、1.0 の内容のままだと思います。

1.5 では細かい仕様が変わっている部分がありますので、マニュアルの方と照らし合わせながら確認された方が良いと思います。

#1.5 用の本って出てるのでしょうか?
mild-seven
Åê¹ÆNo.1353
投稿日時: 2003-11-18 10:52
新米
居住地:
投稿: 7
使用環境:
Re: 一対多チャットでのユーザー特定方法
お返事遅れてすいません。身体壊してしまって死んでいました。
FCSのマニュアルは、やはり「続」のほうしかないのですが、
理解力が足りないせいか苦労しております。
サーバーのバージョンは1,5です。
とりあえずIPを送信側で取得したいと思ってまた
復帰一日目から悪戦苦闘しておりますが、どうもうまくいきません。。。
ゲスト
Åê¹ÆNo.1356
投稿日時: 2003-11-18 13:26
Re: 一対多チャットでのユーザー特定方法
引用:
FCSのマニュアルは、やはり「続」のほうしかないのですが、

「続?」は参考書で、マニュアルではありません。

マニュアルは、体験版を含む製品に付属しています。

引用:
サーバーのバージョンは1,5です。

製品版ですか?

引用:
とりあえずIPを送信側で取得したいと思ってまた復帰一日目から悪戦苦闘しておりますが、どうもうまくいきません。。。

何がどううまくいかないのでしょうか?
IP アドレスを取得して何をされたいのでしょうか?

ちなみに Flash Player には、再生している環境の IP アドレスを取得する機能はありません。
植木友浩
Åê¹ÆNo.1366
投稿日時: 2003-11-18 17:06
案内係
居住地: 東京
投稿: 640
使用環境:
Pro +
.Tiger +
Re: 一対多チャットでのユーザー特定方法
接続中のクライアントのIPは、FCS側でClient.IPで取得できるので、これをClient.Callで渡すか、Flashムービーから、NetConnection.Callで取得するかでできます。

ユーザーの特定は、Application.onConnectの段階で、ClientオブジェクトにIDを連番で振った方が管理しやすいです。

application.onAppStart = function ()
{
 this.nextId = 0;
}

application.onConnect = function( clientObj )
{
 clientObj.id = "u" + this.nextId++;
 this.acceptConnection( clientObj );
}

Client.prototype.getInfo = function()
{
 var obj = new Object();
 obj.command  = "connect";
 obj.id = this.id;
 obj.ip = this.ip;

 return obj;
}


----------------
Tomohiro Ueki
RSSリーダー公開中
チーム-10kg達成

ゲスト
Åê¹ÆNo.1367
投稿日時: 2003-11-18 17:26
Re: 一対多チャットでのユーザー特定方法
引用:
ユーザーの特定は、Application.onConnectの段階で、ClientオブジェクトにIDを連番で振った方が管理しやすいです。

Simple Chat 等のサンプルが 1.5 のマニュアルからは消えているみたいなので、この辺の概念はちょっと分かりにくくなっているかもしれないですね。

application.onAppStart = function ()
{
 this.nextId = 0;

ここの this.nextId は application.nextId とも書けます(^^)

後者の書き方の利点は、Client オブジェクト等からでも利用できるという点です。
つまり、グローバル変数みたいな使い方が出来ます。

application.onConnect = function( clientObj )
{
 clientObj.id = "u" + this.nextId++;
 this.acceptConnection( clientObj );

onConnect で生成された自分のクライアントオブジェクトは clientObj の所で渡されます。

つまりこれを、自分が誰かという情報と一緒にどこかに記録しておけば・・・
youich
Åê¹ÆNo.1369
投稿日時: 2003-11-18 19:23
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: 一対多チャットでのユーザー特定方法
引用:

mild-sevenさんは書きました:
お返事遅れてすいません。身体壊してしまって死んでいました。
FCSのマニュアルは、やはり「続」のほうしかないのですが、
理解力が足りないせいか苦労しております。


FCSのマニュアルは永井さんが訳されてますので
これを読めばほとんど解るんじゃないかと思います
http://www.himco.jp/

引用:

サーバーのバージョンは1,5です。
とりあえずIPを送信側で取得したいと思ってまた


↓のような感じじゃないですか。


//<client >

nc.connect('rtmp:/...',yourname);

  //send privateMessage
function sendPM(toName,msg){
  nc.call("sendPM",null,toName,msg);
}
nc.recvPM = function(result){
	trace("Recieve Message: "+ result);
}

  //getIPAddress
funciton getIP(){
 nc.call("getIP",new Reciever());
}
funciton Reciever(){
   this.onResult = function(res){
       trace("Your IP: "+res);
 }
}


//<server>
application.onConnect = function(client,name){
	client.name = name;
	application.acceptConnection(client);
}

 //sendPrivateMessage
Client.prototype.sendPM = function(toName,msg){
	var n = application.clients.length;
	for(var i=0;i<n;i++){
		if(application.clients[it].name==toName){
			application.clients[it].call("recvPM",null,msg);
		}
	}
}

 //getIP
Client.prototype.getIP = function(){
	return this.ip;
}


----------------
- yo

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops