本次將連接人數、發送還是連接的狀態、頁面信息處理加以完善
如果您這邊分開調用理解的不是太好可以借鑑我之前發佈的websocket專題1~5參考查閱(忘記了是否都被髮布)
WSControllerAdapter java文件 用於處理頁面發送過來的指令分類別處理
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.sceu.tkdtas.constants.Constants;
import org.sceu.tkdtas.handler.SDScoring;
import org.sceu.tkdtas.support.JSONResultSet;
import com.google.gson.Gson;
/** * WSController適配器,用於適配業務 * 、 * */
public class WSControllerAdapter {
public static final Logger log = Logger.getLogger(
WSControllerAdapter.class);
Gson gson = new Gson();
/** * 適配 * @param reqMap */
public void adapter(String requestType, MapreqMap) {
if(Constants.WS_REQTYPE_PRINT_OPEN.equals(requestType)) {printOpen(reqMap);}else if(Constants.WS_REQTYPE_PRINT_CLOSE.equals(requestType)){printClose(reqMap);}else if(Constants.WS_REQTYPE_START.equals(requestType)) {startTime();}else if(Constants.WS_REQTYPE_PAUSE.equals(requestType)) {pauseTime();}else if(Constants.WS_REQTYPE_MANUALSCORING.equals(requestType)) {manualScore(reqMap);}else if(Constants.WS_REQTYPE_MANUALWARNING.equals(requestType)) {manualWarning(reqMap);}else if(Constants.WS_REQTYPE_SD_SCORING.equals(requestType)) {sdScoring(reqMap);}else if(Constants.WS_REQTYPE_SD_PRINT_OPEN.equals(requestType)) {sdPrintOpen(reqMap);}else if(Constants.WS_REQTYPE_SD_PRINT_CLOSE.equals(requestType)) {sdPrintClose(reqMap);}else if(Constants.WS_REQTYPE_NEXT_ROUND_GLOD.equals(requestType)) {nextRoundGlod(reqMap);}else if(Constants.WS_REQTYPE_VISIBLE_HIDE.equals(requestType)) {visibleHide(reqMap);}else if(Constants.WS_REQTYPE_RESET_SCORE_WARNING.equals(requestType)) {resetScoreAndWarning(reqMap);}else if(Constants.WS_REQTYPE_SD_OPEN_SEND_MATCHNO.equals(requestType)) {sdOpenSendMatchesNo(reqMap);}else if(Constants.WS_REQTYPE_ES_MANUALSCORING.equals(requestType)) {esManualScore(reqMap);}}
/** * 重置比賽分數及警告數 * 重置時間,局數增加1或者爲加時賽標識 * @param reqMap */
private void resetScoreAndWarning(MapreqMap) {
WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);
if(ws == null) {log.error("連接已斷開!");
ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);
JSONResultSet js = new JSONResultSet();
js.setsCode(Constants.STATUS_CODE_401);
js.setMsg(Constants.STATUS_MSG_401);
try {ws.sendMessage(gson.toJson(js));}
catch (IOException e) {log.error(e.getMessage(),e);}return;}
MapsendMessageMap = new HashMap();
sendMessageMap.put("CMD", Constants.CMD_RESET_SCORE_WARNING);
sendMessageMap.putAll(reqMap);
try {
ws.sendMessage(gson.toJson(sendMessageMap));}
catch (IOException e) {log.error(e.getMessage(),e); }}
/** * 下一局或加時賽 * 重置時間,局數增加1或者爲加時賽標識 * @param reqMap */
private void visibleHide(MapreqMap) {
WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);
if(ws == null) {log.error("連接已斷開!");
ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);
JSONResultSet js = new JSONResultSet();
js.setsCode(Constants.STATUS_CODE_401);
js.setMsg(Constants.STATUS_MSG_401);
try {ws.sendMessage(gson.toJson(js));}
catch (IOException e) {log.error(e.getMessage(),e);}return;}
MapsendMessageMap = new HashMap();
sendMessageMap.put("CMD", Constants.CMD_VISIBLE_HIDE);
sendMessageMap.putAll(reqMap);
try {ws.sendMessage(gson.toJson(sendMessageMap));}
catch (IOException e) {log.error(e.getMessage(),e); }}/** * 打分器打分 * @param reqMap */private void sdScoring(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);log.info("打分器:::::" + reqMap);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}//MapsendMessageMap = new HashMap();//sendMessageMap.put("CMD", Constants.CMD_SHOW_SD_SCORING); //sendMessageMap.putAll(reqMap); ////try {//ws.sendMessage(gson.toJson(sendMessageMap));//} catch (IOException e) {//log.error(e.getMessage(),e); //}SDScoring sdscoring = new SDScoring(reqMap);Thread thread = new Thread(sdscoring);thread.start();}/** * 下一局或加時賽 * 重置時間,局數增加1或者爲加時賽標識 * @param reqMap */private void nextRoundGlod(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_ROUND_GLOD); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}private void manualWarning(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_MANUALS_WARNING); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}/** * 打分器打分成功向控制端傳值 * @param reqMap */private void esManualScore(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_ES_MANUALS_CORING); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}private void manualScore(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_MANUALS_CORING); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}private void pauseTime() {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_PAUSE_TIME);try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}private void startTime() {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_START_TIME);try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }}/** * 鎖屏 * @param reqMap */private void printClose(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_ES_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_CLOSE_ES);try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e); }} /** * 打開投屏 * @param reqMap */void printOpen(MapreqMap) {WSBase ws = WebSocketPool.wsMap.get(Constants.CLIENTID_SCREENSAVER_CLIENT);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_401);js.setMsg(Constants.STATUS_MSG_401);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}return;}try {ws.sendMessage(Constants.CMD_OPEN_ES);} catch (IOException e) {log.error(e.getMessage(),e);}}/** * 開啓打分器頁面併發送場次信息 * @param reqMap */void sdPrintOpen(MapreqMap) {for(int i=1;i<4;i++){WSBase ws = WebSocketPool.wsMap.get(Constants.SD_CLIENT+"_"+i);if(ws == null) {System.out.println(Constants.SD_CLIENT+"_"+i);log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_402);js.setMsg(Constants.STATUS_MSG_402);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}//return;continue;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_OPEN_CONTROL_ES); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e);}}}/** * 關閉打分器頁面跳轉回鎖屏頁 * @param reqMap */void sdPrintClose(MapreqMap) {for(int i=1;i<4;i++){String sdClientId = Constants.SD_SCREEN_CLIENT+"_"+i;WSBase ws = WebSocketPool.wsMap.get(sdClientId);System.out.println("========================" + sdClientId + " && " + ws);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_402);js.setMsg(Constants.STATUS_MSG_402);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}//return;continue;}MapsendMessageMap = new HashMap();sendMessageMap.put("CMD", Constants.CMD_CLOSE_CONTROL_ES); sendMessageMap.putAll(reqMap); try {ws.sendMessage(gson.toJson(sendMessageMap));} catch (IOException e) {log.error(e.getMessage(),e);}}}/** * 打分器頁面傳比賽編號 * @param reqMap */void sdOpenSendMatchesNo(MapreqMap) {for(int i=1;i<4;i++){WSBase ws = WebSocketPool.wsMap.get(Constants.SD_SCREEN_CLIENT+"_"+i);if(ws == null) {log.error("連接已斷開!");ws = WebSocketPool.wsMap.get(Constants.CLIENTID_CONTROLLER_CLIENT);JSONResultSet js = new JSONResultSet();js.setsCode(Constants.STATUS_CODE_402);js.setMsg(Constants.STATUS_MSG_402);try {ws.sendMessage(gson.toJson(js));} catch (IOException e) {log.error(e.getMessage(),e);}//return;continue;}MapsendMessageMap = new HashMap();
sendMessageMap.put("CMD", Constants.CMD_SD_OPEN_SEND_MATCHNO);
sendMessageMap.putAll(reqMap);
try {
ws.sendMessage(gson.toJson(sendMessageMap));
} catch (IOException e) {
log.error(e.getMessage(),e);
}
}
}
}