<commit_before>var WebSocket = require('ws');
var fs = require('fs');
var rl = require("readline").createInterface(process.stdin, process.stdout);
var net = require("net");

/**
 * インスタンスを初期化します。
 * @constructor
 * @classdesc Webサーバーとの通信を管理するクラス
 */
var websocket_client = function(){
	var th = this;


	var dir_home = process.env[process.platform == "win32" ? "USERPROFILE" : "HOME"];
	/**
	 * 設定ファイルへのパス
	 */
	var setting_file_path = require("path").join(dir_home,".setting.json");

	/* ----- -----------------Websocket---------------- */

	/**
	 * WebsocketサーバーのURL
	 */
	var ws_url = "ws://ec2-52-68-77-61.ap-northeast-1.compute.amazonaws.com:3000";
	/**
	 * Webソケットクライアントのインスタンス
	 * @param {string} ws_url - WebSocketサーバーのURL
	 */
	var ws_client;
	//接続時
	var connect = function(){
		ws_url = "ws://ec2-52-68-77-61.ap-northeast-1.compute.amazonaws.com:3000";
		ws_client = new WebSocket(ws_url);
		ws_client.on('open',function(){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Connect 2 WebServer");
			choose_send(function(str){
				create_send_message(str,function(message){
					ws_client.send(message);
				});
			});
		});
		//メッセージ受け取り時
		ws_client.on('message',function(data){
			message_parse(data);
		});
		ws_client.on('error',function(error){
			setTimeout(connect,2000);
		});
		ws_client.on('close',function(code,message){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Connection to Websocket Server....");
			setTimeout(connect,2000);
		});
	};

	/**
	 * Websoketにメッセージを送信します
	 * @param {string} str - 送信する文字列
	 */
	var send_to_webserver = function(str){
		try{
			return ws_client.send(str);
		}catch(ex){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Error " + ex.message);
		}
	};

	//--------------------------------------------------------------

	/* ------------------ TCP Server And Client ----------------*/
	// Client
	/**
	 * メッセージパーサーサーバーのポート番号
	 */
	var tcp_client_port = 12000;
	/**
	 * メッセージパーサーサーバーに接続するクライアント
	 */
	var tcp_client = new net.Socket({readable:true,writable:true});

	tcp_client.on('error',function(error){
		tcp_client.connect({port:tcp_client_port});
	});	

	/**
	 * メッセージサーバーにメッセージを送信するよ
	 * @param {string} str - 送信する文字列
	 */
	var send_to_mpserver = function(str){
		return tcp_client.write(str);
	};

	/**
	 * [tcp_client]{@link tcp_client}をメッセージパーサーサーバーに接続します
	 */
	var connect_to_mpserver = function(){
		tcp_client.connect({port:tcp_client_port});
	};

	// Server
	/**
	 * メッセージパーサー用TCPサーバーのインスタンス
	 */
	var tcp_server_port = 10000;

	/**
	 * メッセージパーサからのクライアントを受け付けるサーバーのポート番号
	 */
	var tcp_server = new net.Server(function(socket){
		connect_to_mpserver();
		socket.on('error',function(){
			console.log("[WEBSERVER CLIENT] [TCP SERVER] SOCKET ERROR");
		});
		socket.on('data',function(str){
			send_to_webserver(str);
		});
	});

	tcp_server.on('error',function(){
		console.log("[WEBSERVER CLIENT] [TCP SERVER] SERVER ERROR");
	});

	/**
	 * [tcp_server]{@link tcp_server}をオープンします
	 */
	var listen_tcp_server = function(){
		tcp_server.listen(tcp_server_port);
	};

	//--------------------------------------------------------------

	//authかloginどちらを最初に送るか判定する
	/**
	 * authかloginかどちらを最初に送るかを判定します
	 * @param {callback} callback - 設定ファイルがあれば"auth"を、なければ"login"を因数に取るcallbac	 
	 */
	var choose_send = function(callback){<commit_msg>create join divided message<commit_after>var WebSocket = require('ws');
var fs = require('fs');
var rl = require("readline").createInterface(process.stdin, process.stdout);
var net = require("net");

/**
 * インスタンスを初期化します。
 * @constructor
 * @classdesc Webサーバーとの通信を管理するクラス
 */
var websocket_client = function(){
	var th = this;


	var dir_home = process.env[process.platform == "win32" ? "USERPROFILE" : "HOME"];
	/**
	 * 設定ファイルへのパス
	 */
	var setting_file_path = require("path").join(dir_home,".setting.json");

	/* ----- -----------------Websocket---------------- */

	/**
	 * WebsocketサーバーのURL
	 */
	var ws_url = "ws://ec2-52-68-77-61.ap-northeast-1.compute.amazonaws.com:3000";
	/**
	 * Webソケットクライアントのインスタンス
	 * @param {string} ws_url - WebSocketサーバーのURL
	 */
	var ws_client;
	//接続時
	var connect = function(){
		ws_url = "ws://ec2-52-68-77-61.ap-northeast-1.compute.amazonaws.com:3000";
		ws_client = new WebSocket(ws_url);
		ws_client.on('open',function(){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Connect 2 WebServer");
			choose_send(function(str){
				create_send_message(str,function(message){
					ws_client.send(message);
				});
			});
		});
		//メッセージ受け取り時
		ws_client.on('message',function(data){
			message_parse(data);
		});
		ws_client.on('error',function(error){
			setTimeout(connect,2000);
		});
		ws_client.on('close',function(code,message){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Connection to Websocket Server....");
			setTimeout(connect,2000);
		});
	};

	/**
	 * Websoketにメッセージを送信します
	 * @param {string} str - 送信する文字列
	 */
	var send_to_webserver = function(str){
		try{
			return ws_client.send(str);
		}catch(ex){
			console.log("[WEBSERVER CLIENT] [WEBSOCKET CLIENT] Error " + ex.message);
		}
	};

	//--------------------------------------------------------------

	/* ------------------ TCP Server And Client ----------------*/
	// Client
	/**
	 * メッセージパーサーサーバーのポート番号
	 */
	var tcp_client_port = 12000;
	/**
	 * メッセージパーサーサーバーに接続するクライアント
	 */
	var tcp_client = new net.Socket({readable:true,writable:true});

	tcp_client.on('error',function(error){
		tcp_client.connect({port:tcp_client_port});
	});	

	/**
	 * メッセージサーバーにメッセージを送信するよ
	 * @param {string} str - 送信する文字列
	 */
	var send_to_mpserver = function(str){
		return tcp_client.write(str);
	};

	/**
	 * [tcp_client]{@link tcp_client}をメッセージパーサーサーバーに接続します
	 */
	var connect_to_mpserver = function(){
		tcp_client.connect({port:tcp_client_port});
	};

	// Server
	/**
	 * メッセージパーサー用TCPサーバーのインスタンス
	 */
	var tcp_server_port = 10000;

	var part_of_message = "";
	/**
	 * メッセージパーサからのクライアントを受け付けるサーバーのポート番号
	 */
	var tcp_server = new net.Server(function(socket){
		connect_to_mpserver();
		socket.on('error',function(){
			console.log("[WEBSERVER CLIENT] [TCP SERVER] SOCKET ERROR");
		});
		socket.on('data',function(str){
			var string = str.toString();
			if(string.slice(-1) == "}"){
				send_to_webserver(part_of_message + string);
				part_of_message = "";
			}else{
				part_of_message += string;	
			}
		});
	});


	tcp_server.on('error',function(){
		console.log("[WEBSERVER CLIENT] [TCP SERVER] SERVER ERROR");
	});

	/**
	 * [tcp_server]{@link tcp_server}をオープンします
	 */
	var listen_tcp_server = function(){
		tcp_server.listen(tcp_server_port);
	};

	//--------------------------------------------------------------

	//authかloginどちらを最初に送るか判定する
	/**
	 * authかloginかどちらを最初に送るかを判定します
	 * @param {callback} callback - 設定ファイルがあれば"auth"を、なければ"login"を因数に取るcallbac	 
	 */
	var choose_send = function(callback){
{'fraction_non_alphanumeric': 0.21444265416727698, 'fraction_numerical': 0.014501245056393731, 'mean_word_length': 3.1634146341463416, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2096410', 'n_tokens_mistral': 3053, 'n_tokens_neox': 2738, 'n_words': 357}