@polanski

Как из под Node.js сохранить значение сокета в базе mySQL?

Node.js. Опята почти нет. )))
Пишу чат сервер. Клиенты все консольные. Общаются индивидуально, то есть нет "вещания на всех".
Вопрос 1.
Есть ли возможность в NODE js как-то устроить динамически растущий масcив типа :
[id1] [socket_in] [socket_out]
[id2] [socket_in] [socket_out]
....
[idn] [socket_in] [socket_out]

Вопрос 2.
Если у меня уже есть mySQL база, то Как сокет сохранить в ней? В ячейке какого типа это возможно сделать?
Сам ума не приложу (((
Спасибо за помощь.
Мое начальное состояние, не знаю как сохранить сокет клиента.
var net = require('net');
var mysql = require('mysql');
//var clients = [];

net.createServer(function(socket){
	var connection = mysql.createConnection({
		host : '127.0.0.1',
		port : 3306,
		database: 'node',
		user : 'root',
		password : ''
	});
	connection.connect(function(err){
        if(err != null) {
            console.log('Error connecting to mysql');
        }
		else {
            console.log('[+]client connected to mysql');			
		}
    });
///////////////////////////////////////////////////////////////////////////////	
    socket.on('data', function(request) {
		var indata = request.toString("binary");
		//console.log(indata+'\r');
		var msg = indata.trim();
		console.log('after trimming message is: ' + msg);
		if( msg.substr(0,3) === '/w '){
			// Если клиент задал "/w" 		
			var ind = msg.indexOf(' ');
			if(ind !== -1){
			} 
		}
		else{
			console.log(msg);
			// Если клиент не задал "/w" нужно сохранить сокет в базе ........ ?
		}
	});
	//connection.end(function(err){
    //        console.log('[+]client disconnected from mysql');			
    //});	
///////////////////////////////////////////////////////////////////////////////
	socket.on('disconnect', function(socket) {
		console.log('[+]client disconnected'); 	
	});
    socket.on('end', function(socket) {
		console.log('[+]client ending'); 
	});
      socket.on('close', function(socket) {
		console.log('[+]client closing'); 
	});   
    socket.on('error', function(socket) {
		console.log('[+]error from client'); 
	}); 
}).listen('8888');
console.log('for connect use 127.0.0.1:8888'+'\r\n');
  • Вопрос задан
  • 2745 просмотров
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
1) Все массивы в JS — динамические. Используйте метод Array#push, чтобы добавить новый элемент в конец.
2) Присваивайте каждому сокету уникальный id и храните его в базе (хотя и непонятно, зачем это).
Ответ написан
Комментировать
@polanski Автор вопроса
Спасибо.
хотя и непонятно, зачем это

... ну как же, если у меня все клиенты чата консоли (просто putty), я же не смогу устроить отправку и обработку сообщений? А как будет выглядеть объявление массива размером (4 на бесконечность)?
И как удалить из него элемент?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы