ChannelService channelService =
ChannelServiceFactory.getChannelService();
String channelKey = request.getParameter("channelKey");クライアントから渡されるチャンネルキーを取得します。ここでは、「channelKey」といパラメータで送ることにしています。getParameter("channelKey")でこれを取り出し変数に保存します。必要に応じてどこかに格納しておくとよいでしょう。String token = channelService.createChannel(channelKey);チャンネルの作成は、ChannelServiceインスタンスの「createChannel」で行います。引数には、そのチャンネルに割り当てるチャンネルキーを指定します。これでチャンネルが作成され、そのチャンネルのトークン(String)が返されます。
response.getWriter().println(token);取得したチャンネルのトークンは、何らかの形でクライアント側に渡す必要があります。ここでは、そのままprintlnで書きだしてあります。つまり、クライアントからサーブレットにGETアクセスすると、チャンネルを作った後、そのトークンがクライアント側に出力される、というわけです。
<script src='/_ah/channel/jsapi'></script>最初に行なっておくべきは、チャンネルのライブラリのロードです。ライブラリは、デプロイされたアプリケーションの/_ah/channel/jsapiというパスに自動的に組み込まれていますので、これを<script>タグでロードしておきます。
var xhr = new XMLHttpRequest();サーバーに用意しておいたチャンネル作成用のサーブレットにAjaxでアクセスをします。先ほど説明したように、サーブレットのdoGetではchannelKeyというパラメータでチャンネルキーを受け取るようになっていましたので、XMLHttpRequestオブジェクトを作成した後、アクセス先に '?channelKey=' + [チャンネルキー] というようにパラメータを付け足してopeしてやります。また、readyStateで、Ajax通信終了後の処理もバインドしておきます。
xhr.open('GET', path + '?channelKey=' + [チャンネルキー] , true);
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status == 200){
createChannelCallback(xhr);
}
};
xhr.send();
function createChannelCallback(request){
var 変数 = request.responseText;
……取り出したトークンを保存しておく……
};サーブレットのdoGetでは、チャンネル作成後、printlnでトークンを出力してありましたね。ということは、AjaxでサーブレットにGETアクセスしたら、トークンが返送されることになります。そこで、コールバック関数でresponseTextを取り出し、出力されたトークンをどこかに保管してやります。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※サーバー側:サーブレットのdoGet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/plain;charset=utf-8");
ChannelService channelService = ChannelServiceFactory
.getChannelService();
String channelKey = request.getParameter("channelKey");
String token = channelService.createChannel(channelKey);
response.getWriter().println(token); // トークンを出力する
}
※クライアント側:pathのサーブレットにアクセスしトークンを受け取る
function createChannel(path){
var xhr = new XMLHttpRequest();
xhr.open('GET', path + '?channelKey=' + [チャンネルキー] , true);
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status == 200){
createChannelCallback(xhr);
}
};
xhr.send();
};
function createChannelCallback(request){
var 変数 = request.responseText;
……取り出したトークンを保存しておく……
};
| << 前へ | 次へ >> |