private EnumMessageMap getRequestNo(string e, String sessionId) { HashMap map = JsonConvert.DeserializeObject <HashMap>(e); String key = map.GetValue <String>("key"); EnumMessageMap enNo = (EnumMessageMap)Enum.Parse(typeof(EnumMessageMap), key); if (map.ContainsKey("pubmessage")) { if (!sessionList.ContainsKey(sessionId)) { sessionList.Add(sessionId, e); } } return(enNo); }
protected void WebSocketServer_NewMessageReceived(WebSocketSession session, string e) { Console.WriteLine("收到websocket请求,sessionID为" + session.SessionID); Console.WriteLine("收到websocket请求,内容为" + e); try { EnumMessageMap enNo = getRequestNo(e, session.SessionID); String result = e; int errorCode = 0; String errorMessage = ""; switch (enNo) { //获取打印机列表 case EnumMessageMap.printerList: result = ProcGetPrinterList(); break; //执行小规模打印任务 case EnumMessageMap.printJob: result = ProcPrintJob(e, ref errorCode, ref errorMessage); break; //旧业务写程下载+清空目录 case EnumMessageMap.BurnSoft: result = BurnSoftDown(e); break; //获取本机在局域网中的IP case EnumMessageMap.httpServer: result = ProcIp(session, e); break; //旧业务,获取合众思壮电子秤重量 case EnumMessageMap.com_weighting: result = ProcSerialPort(session, e); break; //获取串口列表 case EnumMessageMap.comList: result = comList(session, e); break; //配置串口 case EnumMessageMap.comSetting: result = comSetting(session, e); break; case EnumMessageMap.openCom: String sessionID = session.SessionID; if (!SerialPortEntity.currentSessionPool.ContainsKey(sessionID)) { SerialPortEntity.currentSessionPool.Add(sessionID, session); } result = openCom(e); break; case EnumMessageMap.closeCom: result = closeCom(e); break; //向串口发送十六进制指令 case EnumMessageMap.sendComCommand: result = sendComCommand(session, e); break; //创建文件 case EnumMessageMap.createFile: result = createFile(session, e); break; //删除文件 case EnumMessageMap.deleteFile: result = deleteFile(session, e); break; //重命名文件 case EnumMessageMap.renameFile: result = renameFile(session, e); break; //解析文件配置 case EnumMessageMap.resolveFileSetting: result = resolveFile(session, e); break; //删除目录 case EnumMessageMap.rmDir: result = rmDir(session, e); break; //监控目录 case EnumMessageMap.watchDir: result = watchDir(session, e); break; //创建目录 case EnumMessageMap.mkDir: result = mkDir(session, e); break; //重命名或者移动目录 case EnumMessageMap.mvDir: result = mvDir(session, e); break; //配置FTP访问方式 case EnumMessageMap.ftpSetting: result = ftpSetting(session, e); break; //启用三菱plc case EnumMessageMap.StartSLPLC: result = FetchValueFromPlc(session, e); break; //停用三菱plc case EnumMessageMap.stopSLPlc: result = stopSLPlc(session, e); break; //通过modbus协议从plc从机设备的某个寄存器地址读取值 case EnumMessageMap.modbusInteract: result = modbusInteract(session, e); break; //向指定的sessionID串(逗号分隔),推送消息,主要是用于订阅延迟返回 //的一些消息 case EnumMessageMap.pushMessage: result = pushMessage(e); break; case EnumMessageMap.BroadCastMessage: BroadCastMsg(session, e); result = EnumMessageMap.OK.ToString(); break; default: break; } session.Send(result); Console.WriteLine("正确处理了请求" + result); } catch (Exception err) { Console.WriteLine("处理结果异常" + err.Message); try { session.Send(e); } catch (Exception er) { Console.WriteLine("回发结果异常" + er.Message); } } }