Ich frage mich, was ist der Fehler im Code.Was ist los? Verschiedene Ergebnisse der Serverantwortnachricht
Ich möchte ein korrektes Ergebnis erhalten.
aber jetzt, senden seltsame Ergebnisse auf der Serverseite.
Der Link unten ist die Referenz.
https: // firebase.google.com/docs/cloud-messaging/server#choose
und die Ergebnisse sind unten.
connect ready
host: fcm-xmpp.googleapis.com, and port: 5236
connect ok
connect!
msg: <stream:stream
to="gcm.googleapis.com"version="1.0"xmlns="jabber:
client"xmlns:stream="http://eth erx.jabber.org/streams">
channelConnected
e.getMessage(): BigEndianHeapChannelBuffer(ridx=0, widx=7, cap=7)
MessageDumpByte> - length:<7>
[0000] 15 03 01 00 02 02 46 ......F
messageReceived:
Add, Sie hat einen einfachen Code geschrieben, die ich gemacht.
public class client2
{
final String host = "fcm-xmpp.googleapis.com";
// final String host = "127.0.0.1";
final int port = 5236;
Channel channel = null;
public static void main(String[] args) throws Exception
{
client2 client = new client2();
client.init();
}
public void init()
{
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
bootstrap.setPipelineFactory(new ChannelPipelineFactory()
{
public ChannelPipeline getPipeline() throws Exception
{
return Channels.pipeline(new ClientHandler());
}
});
System.out.println("connect ready");
System.out.println("host: " + host + ", and port: " + port);
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host,
port));
channel = future.getChannel();
System.out.println("connect ok");
}
}
class ClientHandler extends SimpleChannelUpstreamHandler
{
private ChannelBuffer firstMessage;
private final AtomicLong transferredBytes = new AtomicLong();
public ClientHandler()
{
}
public long getTransferredBytes()
{
return transferredBytes.get();
}
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
{
System.out.println("connect!");
StringBuilder msg = new StringBuilder();
msg.append("<stream:stream to=").append("\"")
.append("gcm.googleapis.com").append("\"").append("version=")
.append("\"").append("1.0").append("\"").append("xmlns=")
.append("\"").append("jabber:client").append("\"")
.append("xmlns:stream=").append("\"")
.append("http://etherx.jabber.org/streams").append("\"")
.append(">");
System.out.println("msg: " + msg.toString());
firstMessage = ChannelBuffers.copiedBuffer(msg.toString(),
CharsetUtil.UTF_8);
e.getChannel().write(firstMessage);
}
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
{
System.out.println("e.getMessage(): " + e.getMessage());
transferredBytes.addAndGet(((ChannelBuffer) e.getMessage())
.readableBytes());
ChannelBuffer cb = (ChannelBuffer) e.getMessage();
byte[] message = cb.array();
try
{
String dump = Utility.MessageDumpByte(message);
System.out.println(dump);
System.out.println("messageReceived: "
+ new String(message, "UTF-8"));
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
}
i verwendet jdk 1.7, Netty Version 3.X
und es machte zu diesem Dokument mit Bezug.
Vielen Dank für Ihre Antwort. Ich habe das Problem gefunden. Und es funktioniert. – ywoo
@ zweiundvierzig auf welche Dokumente beziehen Sie sich? –
@ArthurThompson [Diese] (https://firebase.google.com/docs/cloud-messaging/server#choose) –