2016-08-30 1 views
0

Ionic 2 클라이언트의 메시지를 수신하는 Java 서버가 있습니다. Sockets.io를 통해 클라이언트와 서버를 연결할 수 있으며 클라이언트에게 메시지를 성공적으로 보내도록 서버를 가져올 수 있습니다. 그러나 클라이언트에게 서버에 메시지를 보내지 못하게합니다.Sockets.io는 연결 중이지만 메시지를 보내지 않음

즉, send(message)이 호출됩니다. 서버로의 메시지는 emit이어야하지만 ("onSend"는 인쇄되지 않습니다.) 그러나 서버에서 클라이언트로 "Welcome to the chat!" 메시지가 성공적으로 전송됩니다.

어떤 의견이라도 환영합니까?

자바 (서버)

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

내 실수. 메시지 개체를 보내야합니다. 나는 String을 보내려고했다.

관련 문제