public void run(){
		try{
			in = new BufferedReader(
					new InputStreamReader(
							clientSocket.getInputStream()));
			String inputLine; 
			StringBuilder input = new StringBuilder();
			Message msg = null;
			while ((inputLine = in.readLine()) != null) {
				if (inputLine.equalsIgnoreCase("EOM")){
					msg = MessageBus.process(new Message(input.toString()));
					this.producer.produce(msg, true);
					input = new StringBuilder();
				}else if(inputLine.equalsIgnoreCase("BYE")){
					msg = MessageBus.process(new Message(input.toString()));
					this.producer.produce(msg, false);
					break;
				}else{
					input.append(inputLine);
				}   
			}
		}catch(IOException ioe){
			ioe.printStackTrace();
		} catch (JSONException e) {
			e.printStackTrace();
		}finally{
			try{
				in.close();
				clientSocket.close();
				this.producer.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}