Кто-нибудь имеет опыт работы с appengine channel api с GWT?Я следую КРАТКОМУ руководству по использованию, предоставленному googlecode .Мой вопрос, как мы можем получить channelKey (переменная токена в коде ниже) в GWT?Я предполагаю, что вы должны использовать RPC для получения channelKey от сервера для каждой сессии.Это правильно?Я надеялся, что вы можете просто использовать channelId, но это не так.Также лучшим ответом будет вознаграждение любому, кто может предоставить рабочий пример кода для GWT + канала api, кроме примера dance-dance-robot.Я долго и упорно для образца кода или учебника и ничего не нашел.
1004 * Следующий код выполняется и отображает сообщение 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!");
}
});
}});
Код сервера Appengine:
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());
}
}