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