2016-08-30 4 views
0

Ich habe einen Java Server, der Nachrichten auf einem Ionic 2 Client abhört. Ich kann den Client und den Server dazu bringen, sich über Sockets.io zu verbinden, und ich kann den Server dazu bringen, dem Client eine Nachricht erfolgreich zu senden. Ich kann den Client jedoch nicht dazu bringen, dem Server eine Nachricht zu senden.Sockets.io verbindet, aber keine Nachrichten senden

d.h. die JavaScript send(message) aufgerufen wird, der die Nachricht an den Server emit soll, ist es aber nicht ("onSend" wird niemals gedruckt). Aber die Nachricht wird erfolgreich vom Server zum Client gesendet.

Irgendwelche Vorschläge willkommen bitte?

Java (Server)

import com.corundumstudio.socketio.AckRequest; 
import com.corundumstudio.socketio.Configuration; 
import com.corundumstudio.socketio.SocketIOClient; 
import com.corundumstudio.socketio.SocketIOServer; 
import com.corundumstudio.socketio.listener.ConnectListener; 
import com.corundumstudio.socketio.listener.DataListener; 
import com.corundumstudio.socketio.listener.DisconnectListener; 

public class Server { 

    public static void main(String[] args) { 
     Configuration config = new Configuration(); 
     config.setHostname("localhost"); 
     config.setPort(3700); 
     final SocketIOServer server = new SocketIOServer(config); 

     server.addConnectListener(new ConnectListener() { 
      @Override 
      public void onConnect(SocketIOClient client) { 
       System.out.println("onConnected"); 
       client.sendEvent("chat_message:message", new Message("", "Welcome to the chat!")); 
      } 
     }); 

     server.addDisconnectListener(new DisconnectListener() { 
      @Override 
      public void onDisconnect(SocketIOClient client) { 
       System.out.println("onDisconnected"); 
      } 
     }); 

     server.addEventListener("chat_message:send", Message.class, new DataListener<Message>() { 
      @Override 
      public void onData(SocketIOClient client, Message data, AckRequest ackSender) throws Exception { 
       System.out.println("onSend: " + data.toString()); 
       server.getBroadcastOperations().sendEvent("chat_message:message", data); 
      } 
     }); 

     System.out.println("Starting server..."); 
     server.start(); 
     System.out.println("Server started"); 

    } 
} 

Ionic 2 Typoskript (Client)

import { Component, NgZone } from '@angular/core'; 
import { Http } from "@angular/http"; 
declare var io; 
//require ('io'); 

@Component({ 
    templateUrl: 'build/pages/chat/chat.html', 
}) 

export class ChatPage { 

    private socketHost: string = "http://localhost:3700"; 
    private messages: string[] = []; 
    private zone: NgZone = null; 
    private chatBox: string = null; 
    private socket: any = null; 

    constructor(http: Http) { 
    this.messages = []; 
    this.zone = new NgZone({ enableLongStackTrace: false }); 
    let url = this.socketHost + "/fetch"; 
    //let url = this.socketHost; 
    http.get(url).subscribe((success) => { 
     var data = success.json(); 
     for (var i = 0; i < data.length; i++) { 
    console.log('sub: '+data[i].message); 
     this.messages.push(data[i].message); 
     } 
    }, (error) => { 
     console.log(JSON.stringify(error)); 
    }); 
    this.chatBox = ""; 


    this.socket = io(this.socketHost); 
    this.socket.on("chat_message:message", (msg) => { 
     this.zone.run(() => { 
    console.log('run: '+msg); 
    console.log(msg); 
     this.messages.push(msg); 
     }); 
    }); 
    } 

    send(message) { 
    if (message && message != "") { 
    console.log('send: '+message); 
     this.socket.emit("chat_message:send", message); 
    } 
    this.chatBox = ""; 
    } 
} 

Antwort

1

Mein Fehler. Das Nachrichtenobjekt sollte gesendet werden. Ich habe versucht, einen String

zu senden
Verwandte Themen