2016-08-30 13 views
0

Ionic 2クライアントのメッセージをリッスンするJavaサーバーがあります。クライアントとサーバーがSockets.io経由で接続できるようになり、クライアントにメッセージを正常に送信できるようになります。しかし、クライアントにサーバーにメッセージを送信させることはできません。Sockets.ioは接続していますが、メッセージは送信していません

つまり、send(message)のjavascriptが呼び出されます。サーバーへのメッセージはemitである必要があります("onSend"は決して印刷されません)。しかし、"Welcome to the chat!"メッセージがサーバーからクライアントに正常に送信されています。

どのようなご提案を歓迎しますか?

のJava(サーバー)

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"); 

    } 
} 

イオン2活字体(クライアント)

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 = ""; 
    } 
} 

答えて

1

私のミス。メッセージオブジェクトを送信する必要があります。私は弦を送ろうとしていた。

関連する問題