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){サーブレットのdoGetでは、チャンネル作成後、printlnでトークンを出力してありましたね。ということは、AjaxでサーブレットにGETアクセスしたら、トークンが返送されることになります。そこで、コールバック関数でresponseTextを取り出し、出力されたトークンをどこかに保管してやります。
var 変数 = request.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; ……取り出したトークンを保存しておく…… };
<< 前へ | 次へ >> |