// Path: ChatClient/src/main/java/com/chatroom/client/Main.java
// public class Main extends Application {
// 
//     public final static String LoginUIID = "LoginUI";
//     public final static String LoginUIRes = "fxml/LoginUI.fxml";
// 
//     public final static String ChatUIID = "ChatUI";
//     public final static String ChatUIRes = "fxml/ChatUI.fxml";
// 
//     public final static String EmojiSelectorUIID = "EmojiSelectorUI";
//     public final static String EmojiSelectorUIRes = "fxml/EmojiSelectorUI.fxml";
// 
//     private StageController stageController;
// 
// 	@Override
// 	public void start(Stage primaryStage) {
// 		try {
// 			//新建一个StageController控制器
// 	        stageController = new StageController();
// 
// 	        //将主舞台交给控制器处理
// 	        stageController.addPrimaryStage(primaryStage);
// 
// 	        //加载两个舞台，每个界面一个舞台
// 	        //stageController.loadStage(LoginUIID, LoginUIRes);
// 	        //stageController.loadStage(ChatUIID, ChatUIRes);
// 	        stageController.loadStage(LoginUIID, LoginUIRes, false, StageStyle.UNDECORATED);
// 	        stageController.loadStage(ChatUIID, ChatUIRes, false, StageStyle.UNDECORATED);
// 	        stageController.loadStage(EmojiSelectorUIID, EmojiSelectorUIRes, true, StageStyle.UNDECORATED);
// 
// 	        //显示MainView舞台
// 	        stageController.showStage(LoginUIID);
// 		} catch(Exception e) {
// 			e.printStackTrace();
// 		}
// 	}
// 
// 	public static void main(String[] args) {
// 		launch(args);
// 	}
// }
// 
// Path: ChatServer-TXP/src/main/java/com/chatroom/messages/Message.java
// public class Message {
// 	//消息类型
// 	private MessageType type;
// 	//用户集
// 	LinkedList<UserInfo> userlist;
// 	//消息来源
// 	private String from;
// 	//消息对象
// 	private String to;
// 	//消息内容
// 	private String content;
// 
// 	public MessageType getType() {
// 		return type;
// 	}
// 	public void setType(MessageType type) {
// 		this.type = type;
// 	}
// 	public LinkedList<UserInfo> getUserlist() {
// 		return userlist;
// 	}
// 	public void setUserlist(LinkedList<UserInfo> userlist) {
// 		this.userlist = userlist;
// 	}
// 	public String getFrom() {
// 		return from;
// 	}
// 	public void setFrom(String from) {
// 		this.from = from;
// 	}
// 	public String getTo() {
// 		return to;
// 	}
// 	public void setTo(String to) {
// 		this.to = to;
// 	}
// 	public String getContent() {
// 		return content;
// 	}
// 	public void setContent(String content) {
// 		this.content = content;
// 	}
// 
// 
// 
// 
// }


import java.net.URI;
import java.net.URISyntaxException;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.chatroom.client.Main;
import com.chatroom.messages.Message;
import com.google.gson.Gson;
		// websocket初始化
		try {
			wsc = new WebSocketClient(new URI(url)) {

				@Override
				public void onOpen(ServerHandshake handshake) {
					// TODO Auto-generated method stub
					logger.info("本机已成功连接{}服务器！下一步用户登录..", getURI());

				}

				@Override
				public void onMessage(String revString) {
					// TODO Auto-generated method stub
					// 读取来自客户端的消息
					if (revString != null) {
						logger.info("收到服务器消息..");
						logger.debug("数据内容:{}", revString);
						logger.info("对数据进行解析并做响应中..");
						Message message = gson.fromJson(revString, Message.class);
						// TODO:对服务器的消息进行解析
						switch (message.getType()) {
						case SUCCESS:
							// 登录成功后进入ChatUI界面，需要username和pic，并且需要更新用户集(在USERLIST消息中处理)。
							logger.info("[{}]用户登录成功！", userName);
							// 切换到ChatUI界面
							loginController.changeStage(Main.ChatUIID);
							break;
						case FAIL:
							// 登录失败，直接在loginIU上显示失败的原因
// Path: ChatClient/src/main/java/com/chatroom/client/Main.java
// public class Main extends Application {
// 
//     public final static String LoginUIID = "LoginUI";
//     public final static String LoginUIRes = "fxml/LoginUI.fxml";
// 
//     public final static String ChatUIID = "ChatUI";
//     public final static String ChatUIRes = "fxml/ChatUI.fxml";
// 
//     public final static String EmojiSelectorUIID = "EmojiSelectorUI";
//     public final static String EmojiSelectorUIRes = "fxml/EmojiSelectorUI.fxml";
// 
//     private StageController stageController;
// 
// 	@Override
// 	public void start(Stage primaryStage) {
// 		try {
// 			//新建一个StageController控制器
// 	        stageController = new StageController();
// 
// 	        //将主舞台交给控制器处理
// 	        stageController.addPrimaryStage(primaryStage);
// 
// 	        //加载两个舞台，每个界面一个舞台
// 	        //stageController.loadStage(LoginUIID, LoginUIRes);
// 	        //stageController.loadStage(ChatUIID, ChatUIRes);
// 	        stageController.loadStage(LoginUIID, LoginUIRes, false, StageStyle.UNDECORATED);
// 	        stageController.loadStage(ChatUIID, ChatUIRes, false, StageStyle.UNDECORATED);
// 	        stageController.loadStage(EmojiSelectorUIID, EmojiSelectorUIRes, true, StageStyle.UNDECORATED);
// 
// 	        //显示MainView舞台
// 	        stageController.showStage(LoginUIID);
// 		} catch(Exception e) {
// 			e.printStackTrace();
// 		}
// 	}
// 
// 	public static void main(String[] args) {
// 		launch(args);
// 	}
// }
// 
// Path: ChatServer-TXP/src/main/java/com/chatroom/messages/Message.java
// public class Message {
// 	//消息类型
// 	private MessageType type;
// 	//用户集
// 	LinkedList<UserInfo> userlist;
// 	//消息来源
// 	private String from;
// 	//消息对象
// 	private String to;
// 	//消息内容
// 	private String content;
// 
// 	public MessageType getType() {
// 		return type;
// 	}
// 	public void setType(MessageType type) {
// 		this.type = type;
// 	}
// 	public LinkedList<UserInfo> getUserlist() {
// 		return userlist;
// 	}
// 	public void setUserlist(LinkedList<UserInfo> userlist) {
// 		this.userlist = userlist;
// 	}
// 	public String getFrom() {
// 		return from;
// 	}
// 	public void setFrom(String from) {
// 		this.from = from;
// 	}
// 	public String getTo() {
// 		return to;
// 	}
// 	public void setTo(String to) {
// 		this.to = to;
// 	}
// 	public String getContent() {
// 		return content;
// 	}
// 	public void setContent(String content) {
// 		this.content = content;
// 	}
// 
// 
// 
// 
// }


// Path: ChatClient/src/main/java/com/chatroom/communication/WebsocketComm.java
import java.net.URI;
import java.net.URISyntaxException;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.chatroom.client.Main;
import com.chatroom.messages.Message;
import com.google.gson.Gson;

		// websocket初始化
		try {
			wsc = new WebSocketClient(new URI(url)) {

				@Override
				public void onOpen(ServerHandshake handshake) {
					// TODO Auto-generated method stub
					logger.info("本机已成功连接{}服务器！下一步用户登录..", getURI());

				}

				@Override
				public void onMessage(String revString) {
					// TODO Auto-generated method stub
					// 读取来自客户端的消息
					if (revString != null) {
						logger.info("收到服务器消息..");
						logger.debug("数据内容:{}", revString);
						logger.info("对数据进行解析并做响应中..");
						Message message = gson.fromJson(revString, Message.class);
						// TODO:对服务器的消息进行解析
						switch (message.getType()) {
						case SUCCESS:
							// 登录成功后进入ChatUI界面，需要username和pic，并且需要更新用户集(在USERLIST消息中处理)。
							logger.info("[{}]用户登录成功！", userName);
							// 切换到ChatUI界面
							loginController.changeStage(Main.ChatUIID);
							break;
						case FAIL:
							// 登录失败，直接在loginIU上显示失败的原因
							loginController.setResultText(message.getContent());