1
任何人都有与GWT的appengine通道API的经验?我一直在遵循googlecode提供的简介“操作方法”。我的问题是我们如何在GWT中获得channelKey(下面的代码中的标记变量)?我假设你必须使用RPC从服务器获取每个会话的channelKey。它是否正确?我希望你可以使用channelId,但似乎并非如此。同样,最佳答案将授予任何能为GWT +频道api提供工作示例代码的人,以及舞蹈跳舞机器人示例。我已经看了很长时间,很难找到示例代码或教程,并且什么也没找到GWT和频道API
以下代码执行并显示onError消息。我假设“令牌”是由服务器代码生成的channelKey。它是否正确?
GWT客户端代码:
ChannelFactory.createChannel(token, new ChannelCreatedCallback() {
@Override
public void onChannelCreated(Channel channel) {
channel.open(new SocketListener() {
@Override
public void onOpen() {
Window.alert("Channel opened!");
}
@Override
public void onMessage(String message) {
Window.alert("Received: " + message);
}
@Override
public void onError(SocketError error) {
Window.alert("Error: " + error.getDescription());
}
@Override
public void onClose() {
Window.alert("Channel closed!");
}
});
} });
应用服务引擎服务器代码:
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.channel.ChannelMessage;
import com.google.appengine.api.channel.ChannelServiceFactory;
@SuppressWarnings("serial")
public class SendChannelMsg extends HttpServlet {
private final String CHANNELNAME = "test";
private static String channelKey;
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
if (channelKey == null) {
channelKey = ChannelServiceFactory.getChannelService()
.createChannel(CHANNELNAME);
}
String ret = "";
String command = req.getParameter("command");
if (command.equals("join")) {
ret = channelKey;
} else if (command.equals("send")) {
try{
ChannelServiceFactory.getChannelService()
.sendMessage(
new ChannelMessage(channelKey, req
.getParameter("message")));
} catch(Exception e){
resp.getWriter().println("error "+e.getMessage());
}
}
resp.getOutputStream().write(ret.getBytes());
}
}
我只是在我的问题中添加了一些服务器端代码。所以你说我只需要在客户端代码中传递“CHANNELNAME”(在本例中为“test”)作为标记? – Patrick