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
だから、私のサーバーコードまたはコミュニカことを示唆していますクライアントとサーバーの間の問題は間違っていると思います。
アイデア?
ありがとうございます。私は今それを見ています...サーバ上の '' send''と '' message''を '' chat_message''に変更してクライアントに合わせると、サーバログに次のようなメッセージが表示されます: 'Starting server ... サーバーが起動しました onConnected onDisconnected onConnected'ただし、サーバーからの「ヌル」応答でアプリケーションがまだハングしています。 – Richard
うーん、悲しいことにはそれについて何も知らない - それが私が見ることができる唯一の明白な間違いだった。 [Demo files](https://github.com/mrniko/netty-socketio-demo/blob/master/server/src/main/java/com/corundumstudio/socketio/demo/ChatLauncher)を見てください。Java)あなたのJavaコードが正しいように見えます。 – rinukkusu
今は部分的に動作しているようです。ご協力ありがとうございました。 – Richard