Приложение чата Node.js - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать чат для приложения в реальном времени, и я хочу, чтобы в нем были отдельные группы и каналы, такие как Telegram и WhatsApp, я делаю это с помощью узла js и socket.io, но когда я делаю это, каждое сообщение приходитвся группа, и это действительно конфликтует, как реализовать это, я могу сделать это с одним файлом .js и одним сокетом, как следующий код?

const express = require('express'),
http = require('http'),
app = express(),
server = http.createServer(app),
io = require('socket.io').listen(server);
var mysql = require('mysql');


var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "TELETRAINING"
});


app.get('/', function (req, res) {

 res.send('Chat Server is running on port 3000')
})
io.on('connection', function (socket) {

console.log('user connected')
socket.on('userisinchatroom', function (classid, userid) {
    console.log("chat for classromm with id:" + classid)
    var sql = "SELECT content FROM chat WHERE studentid=" + classid;
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("messages is forward to client!");
        let query = {"messageList": result};
        io.emit("query", query);
    })
})
   socket.on('join', function (userNickname) {

    console.log(userNickname + " : has joined the chat ");

    socket.broadcast.emit('userjoinedthechat', userNickname + " : has joined 
    the chat ");
})

socket.on('messagedetection', function (senderNickname, messageContent, 
studentid, classid) {

    //log the message in console

    console.log(senderNickname + " : " + messageContent)
  //  con.connect(function (err) {
        //if (err) throw err;
        console.log("Connected!");
        var sql = "INSERT INTO chat (content,studentid, classid) VALUES ('" + messageContent + "', '" + studentid + "', '" + classid + "')";
        con.query(sql, function (err, result) {
            if (err) throw  err;
            console.log("1 record inserted")

        });
    //    con.end();

  //  });
    //create a message object

    let message = {"message": messageContent, "senderNickname": senderNickname}

    // send the message to all users including the sender  using io.emit()

    io.socket().in(socket.id).emit('message', message)

})

socket.on('disconnect', function (userNickname) {

    console.log(userNickname + ' has left ')

    socket.broadcast.emit("userdisconnect", ' user has left')


})


   })


    server.listen(3000, function () {

console.log('Node app is running on port 3000')

  })
...