⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serversessionhandler.java

📁 利用mina框架写的一个通信实例。初学者的一个好教程。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					.println("--info server receive message type is callInResponse");
			CallInMessage myMessage = (CallInMessage) message;
			System.out
					.println("--info server receive a call in message,caller:"
							+ myMessage.getCaller());
			System.out
					.println("--info server receive a call in message,reserve:"
							+ myMessage.getReserve());
			System.out.println("--info server receive a call in message,zone:"
					+ myMessage.getZone());

			// 亚信呼入处理逻辑开始
			if (0 == testWebService.testHandleCallInMsg(this.getStringAttribute(session,"name"),myMessage.getCaller().toString(),myMessage.getZone().toString())){			// 调用小胡的函数传递callIn消息。
				System.out.println("callIn failure!");
				session.close();
			}
			else{
				System.out.println("callIn success!");
			}

			// 亚信呼入处理逻辑结束

			// must send call_in_response
			CallInResponseMessage response = new CallInResponseMessage();
			response.setHead_len(Constants.MESSAGE_LEN_CALL_IN_RESPONSE);
			response.setHead_command(Constants.TYPE_CALL_IN_RESPONSE);
			response.setHead_sequence(myMessage.getHead_sequence());
			session.write(response);
		}
		
		// process call_hang
		if (message instanceof CallHangMessage) {
			System.out
					.println("--info server receive message type is callInResponse");
			CallHangMessage myMessage = (CallHangMessage) message;
			System.out
					.println("--info server receive a call in message,caller:"
							+ myMessage.getCaller());
			System.out
					.println("--info server receive a call in message,reserve:"
							+ myMessage.getReserve());
			System.out.println("--info server receive a call in message,zone:"
					+ myMessage.getZone());

			// 亚信挂机处理逻辑开始
			if (0 == testWebService.testHandleCallHangMsg(this.getStringAttribute(session,"name"),myMessage.getCaller().toString(),myMessage.getZone().toString())){			// 调用小胡的函数传递callHang消息。
				System.out.println("callHang failure!");
				session.close();
			}
			else{
				System.out.println("callHang success!");
			}
			// 亚信挂机处理逻辑结束

			// must send call_hang_response
			CallHangResponseMessage response = new CallHangResponseMessage();
			response.setHead_len(Constants.MESSAGE_LEN_CALL_IN_RESPONSE);
			response.setHead_command(Constants.TYPE_CALL_IN_RESPONSE);
			response.setHead_sequence(myMessage.getHead_sequence());
			session.write(response);
		}

		// process call_out_result_response_response
		if (message instanceof CallOutResultMessage) {
			System.out
					.println("--info server receive message type is CallOutResultMessage");
			CallOutResultMessage myMessage = (CallOutResultMessage) message;

			System.out
					.println("--info server receive a call in CallOutResultMessage,display:"
							+ myMessage.getDisplay());

			System.out
					.println("--info server receive a call in CallOutResultMessage,zone:"
							+ myMessage.getZone());
			System.out
					.println("--info server receive a call in CallOutResultMessage,reserve:"
							+ myMessage.getReserve());

			System.out
					.println("--info server receive a call in CallOutResultMessage,result:"
							+ myMessage.getResult());

			// 处理呼出结果逻辑开始
			if (0 == testWebService.testHandleCallOutResultMsg(this.getStringAttribute(session,"name"),myMessage.getDisplay().toString(),myMessage.getZone().toString(),myMessage.getResult())){			// 调用小胡的函数传递callOutResult消息。
				System.out.println("callOutResult failure!");
				session.close();
			}
			else{
				System.out.println("callOutResult success!");
			}
			// 处理呼出结果逻辑结束

			// must send call_out_result_response
			CallOutResultResponseMessage response = new CallOutResultResponseMessage();
			response
					.setHead_len(Constants.MESSAGE_LEN_CALL_OUT_RESULT_RESPONSE);
			response.setHead_command(Constants.TYPE_CALL_OUT_RESULT_RESPONSE);
			response.setHead_sequence(myMessage.getHead_sequence());
			session.write(response);

		}

		// process active_test_response_response
		if (message instanceof ActiveTestMessage) {
			System.out
					.println("--info server receive message type is ActiveTestMessage");
			ActiveTestMessage myMessage = (ActiveTestMessage) message;

			ActiveTestResponseMessage response = new ActiveTestResponseMessage();
			response.setHead_len(Constants.MESSAGE_LEN_ACTIVE_TEST_RESPONSE);
			response.setHead_command(Constants.TYPE_ACTIVE_TEST_RESPONSE);
			response.setHead_sequence(myMessage.getHead_sequence());
			session.write(response);

		}

		// process active_test_response_response
		if (message instanceof ActiveTestResponseMessage) {
			ActiveTestResponseMessage myMessage = (ActiveTestResponseMessage) message;
			activeResponse = myMessage;
			System.out
					.println("--info server receive message type is ActiveTestResponseMessage");
		}
		System.out.println("--info server message Received end,class:" + this);
	}

	public void test(ProtocolSession session, Object message) {
		// test send call out message
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("test,server send CallOut...");
		CallOutMessage sendMessage = new CallOutMessage();
		sendMessage.setHead_len(Constants.MESSAGE_LEN_CALL_OUT);
		sendMessage.setHead_command(Constants.TYPE_CALL_OUT);
		sendMessage.setHead_sequence(0);

		sendMessage.setSrc("05856".getBytes());
		sendMessage.setDisplay("1860".getBytes());
		sendMessage.setDest("138".getBytes());
		sendMessage.setService("help".getBytes());
		sendMessage.setZone("022".getBytes());
		sendMessage.setReserve("dian".getBytes());

		// send
		session.write(sendMessage);
		System.out.println("session.write(sendMessage) end!");
	}
	
	// add seg .lk
	public void testActiveTest(ProtocolSession session, Object message) {
		// test send activeTest message
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("test,server send ActiveTest...");
		ActiveTestMessage sendMessage = new ActiveTestMessage();
		sendMessage.setHead_len(Constants.MESSAGE_LEN_ACTIVE_TEST);
		sendMessage.setHead_command(Constants.TYPE_ACTIVE_TEST);
		sendMessage.setHead_sequence(0);
		System.out.println("activeMessage: head_len:" + sendMessage.getHead_len() + ";head_command:" + sendMessage.getHead_command()+ ";head_sequ:"  + sendMessage.getHead_sequence() );

		// send
		session.write(sendMessage);
		System.out.println("session.write(sendMessage) end!");
	}
	
	
	
	// add seg.lk
	/*
	public int testCallWebLogin(String account,String no){		
		if(1==1)
			 return 1;
		else 
			return 0;
	}
	public int testHandleCallInMsg(String account,String no1,String no2){		
		if(1==1)
			 return 1;
		else 
			return 0;
	}
	*/


	
	
	public void messageSent(ProtocolSession session, Object message) {		// 调用session.write(),立即返回,发送数据结束时候会调用messageSent该方法。
		
		System.out.println("--info session message send");
	}

	public void sessionIdle(ProtocolSession session, IdleStatus status) {
		System.out.println("--info sessionIdle");
		
		// add segment .lk
		// 发送 心跳,接受心跳回应,判断连接是否成功,不成功则关闭session。
		//??
		//activeResponse = null;
		//testSendActiveTest(session,null);
		activeResponse1 = null;
		//this.test(session,null);
		try {
			System.out.println("Thread sleep: 10 s" );
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("activeResponse1:" + activeResponse1);
		if(activeResponse1 instanceof CallOutResponseMessage){
			System.out.println("ActiveTest success!");
		}	
		else{
			System.out.println("ActiveTest failure!session close.");
			session.close();
		}
	}

	public void exceptionCaught(ProtocolSession session, Throwable cause) {
		cause.printStackTrace();
		// close the connection on exceptional situation
		session.close();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -