2016-08-30 6 views
0

Ionic2(Angular2)を使用してチャットアプリケーションを作成しようとしています。私はJavaサーバーイオン2クライアントを持っています。オリジナル例外:ReferenceError:ioが定義されていません

私は次のエラーを取得:

ORIGINAL EXCEPTION: ReferenceError: io is not defined

任意の提案をしてください?

クライアント

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++) { 
     this.messages.push(data[i].message); 
     } 
    }, (error) => { 
     console.log(JSON.stringify(error)); 
    }); 
    this.chatBox = ""; 


    this.socket = io(this.socketHost); 
    this.socket.on("chat_message", (msg) => { 
     this.zone.run(() => { 
     this.messages.push(msg); 
     }); 
    }); 
    } 

    send(message) { 
    if (message && message != "") { 
     this.socket.emit("chat_message", message); 
    } 
    this.chatBox = ""; 
    } 
} 

HTML

<ion-navbar *navbar> 
    <ion-title> 
     Chat 
    </ion-title> 
</ion-navbar> 

<ion-content class="home"> 
    <ion-list> 
     <ion-item *ngFor="let message of messages">{{message}}</ion-item> 
    </ion-list> 
</ion-content> 

<ion-footer-bar> 
    <ion-input> 
     <input type="text" [(ngModel)]="chatBox" placeholder="Message..." /> 
     <button (click)="send(chatBox)">Send</button> 
    </ion-input> 
</ion-footer-bar> 

index.htmlを

<script src="/socket.io/socket.io.js"></script> 

サーバー

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("message", new Message("", "Welcome to the chat!")); 
      } 
     }); 
     server.addDisconnectListener(new DisconnectListener() { 
      @Override 
      public void onDisconnect(SocketIOClient client) { 
       System.out.println("onDisconnected"); 
      } 
     }); 
     server.addEventListener("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("message", data); 
      } 
     }); 
     System.out.println("Starting server..."); 
     server.start(); 
     System.out.println("Server started"); 

    } 
} 

UPDATE

は私がindex.htmlに以下を追加し、私はそれ以上のすべてのエラーを得ることはありません:

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

しかし、それだけでハングします。そしてFirebugの中で、私は次のリクエストがちょうどハングしていることがわかります。

GET http://localhost:3700/

サーバーコンソールに印刷され、次のサーバーがASから次のリクエスト回数が実行されていない場合は

onConnected

予想されるが、サーバーが実行されている場合、要求は返さないが、null応答で:

GET http://localhost:3700/socket.io/?EIO=3&transport=...LRQn9sx&sid=53081e79-81f3-4fc0-8fb7-17c8673938ca   
200 OK 
     27ms 

だから、私のサーバーコードまたはコミュニカことを示唆していますクライアントとサーバーの間の問題は間違っていると思います。

アイデア?

答えて

0

あなたが聞いている角型アプリでは、chat_messageを発光しています。

あなたのJavaサーバーでは、sendを聞いて、messageを放出しています。

これは加算されませんか?

+0

ありがとうございます。私は今それを見ています...サーバ上の '' send''と '' message''を '' chat_message''に変更してクライアントに合わせると、サーバログに次のようなメッセージが表示されます: 'Starting server ... サーバーが起動しました onConnected onDisconnected onConnected'ただし、サーバーからの「ヌル」応答でアプリケーションがまだハングしています。 – Richard

+0

うーん、悲しいことにはそれについて何も知らない - それが私が見ることができる唯一の明白な間違いだった。 [Demo files](https://github.com/mrniko/netty-socketio-demo/blob/master/server/src/main/java/com/corundumstudio/socketio/demo/ChatLauncher)を見てください。Java)あなたのJavaコードが正しいように見えます。 – rinukkusu

+0

今は部分的に動作しているようです。ご協力ありがとうございました。 – Richard

関連する問題