しばらくして、私はGoogle Channel API
作業の最初の部分を手に入れました。JavaScriptクライアントからサーバーへのメッセージの送信に問題があります。Google Channel API
接続用のサーブレットは次のとおりです。
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
ChannelService channelService = ChannelServiceFactory.getChannelService();
String token = channelService.createChannel(user.getUserId());
FileReader reader = new FileReader("index.html");
CharBuffer buffer = CharBuffer.allocate(16384);
reader.read(buffer);
reader.close();
String index = new String(buffer.array());
index = index.replaceAll("\\{\\{ token \\}\\}", token);
resp.setContentType("text/html");
resp.getWriter().write(index);
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
次のindex.html
ようになります。
<script src="/_ah/channel/jsapi"></script>
<body>
<script type="text/javascript">
onOpened = function() {
alert("opened");
}
var token = "{{ token }}";
var channel = new goog.appengine.Channel(token);
var handler = {
'onopen' : onOpened,
'onmessage' : onMessage,
'onerror' : function() {
},
'onclose' : function() {
}
};
var socket = channel.open(handler);
socket.onopen = onOpened;
socket.onmessage = onMessage;
function sendMessage() {
// Send JSON object to server
}
</script>
<h1>Google Test Channel API</h1>
<form>
<input type="button" value="Send" onclick="sendMessage();">
</form>
</body>
アプリケーションをロードするとopened
アラートが表示され、接続が機能していると思います。ここで、誰かがボタンをクリックした場合に、サーバーにメッセージを送信したいと思います。
POSTまたはGETでXMLHttpRequest関数を使用する必要があることを読みました。ただし、新しいURLは渡さず、値を渡すだけです。JSONオブジェクトをサーバーに送信する方法はありますか?
何かのようなもの:
{
"message": "This is a JavaClient message!"
}