2016-08-09 12 views
0

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.

  1. https://github.com/xose/netty-xmpp

  2. http://www.programcreek.com/java-api-examples/index.php?source_dir=gcm_server-master/src/com/grokkingandroid/sampleapp/samples/gcm/ccs/server/CcsClient.java#

Antwort

1

Was Ihnen fehlt, ist, dass Sie zunächst eine TLS-Verbindung herstellen müssen (die ganz klar in der Dokumentation erklärt).

Die Antwort Sie bekommen, sagt:

0x15  Alert 
0x03 0x01 TLS version 1.0 
0x00 0x02 Message Length 
0x02  Fatal 
0x46  Certificate unknown 

So gehen, studieren, wie netty SSL-Handler zu verwenden.

+0

Vielen Dank für Ihre Antwort. Ich habe das Problem gefunden. Und es funktioniert. – ywoo

+0

@ zweiundvierzig auf welche Dokumente beziehen Sie sich? –

+0

@ArthurThompson [Diese] (https://firebase.google.com/docs/cloud-messaging/server#choose) –