.. include:: ../services/channel.rst API使用手册 ============ Server端API: `点击查看 `_ .. include:: ../services/channel-js-api.rst 使用示例 ============ .. highlight:: java 下面我们使用 `TicTacToe(井字棋)`_ 游戏来示范Channel服务的使用方法: .. _TicTacToe(井字棋): http://zh.wikipedia.org/wiki/%E4%BA%95%E5%AD%97%E6%A3%8B 完整代码:https://github.com/sinacloud/sae-channel-examples/tree/master/java 演示地址:http://javachannel.sinaapp.com/ **实现简要介绍** 玩家1首次打开游戏页面为用户创建一个channel,同时实例化一个Game对象存储至缓存(Memcache)中,等待其他玩家加入; 代码简要实现(详见:https://github.com/sinacloud/sae-channel-examples/blob/master/java/WebContent/index.jsp) :: SaeChannel channel = new SaeChannel(); String url1 = channel.createChannel(user1);//创建的channel作为WebSocket url Game game = new Game(gamekey,user1,url1); game.put();//game保存至缓存 有玩家2加入游戏时为玩家2创建另一个channel,同时更新缓存中的Game对象,同时向玩家1,2发送消息告知游戏开始; 代码简要实现(详见:https://github.com/sinacloud/sae-channel-examples/blob/master/java/src/game/Opened.java) :: String url2 = channel.createChannel(user2);//创建的channel作为WebSocket url //向玩家发送消息告知游戏开始 channel.sendMessage(user1, game); channel.sendMessage(user2, game); 游戏进行实时向玩家channel发送消息,更新游戏信息,使用JavaScript的sae.Channel对象的onmessage方法实时更新游戏状态。 代码简要实现(服务端代码详见:https://github.com/sinacloud/sae-channel-examples/blob/master/java/src/game/Opened.java) :: game.xMove(1); game.oMove(2); channel.sendMessage(user1, game); channel.sendMessage(user2, game); //JavaScript var channel = sae.Channel(url); channel.onmessage = function(message){ updateGame(message); }