使用websocket节点js和php中的输入表单保存消息

时间:2018-03-04 02:18:19

标签: javascript php node.js forms websocket

欢迎所有人, 在我的项目中,我用PHP创建了一个社交网络,并使用websocket和node.js进行聊天

我遇到的问题是我无法将消息保存在我的数据库中,因为我无法从输入表单中获取消息。

服务器端有node.js(仅限js) 客户端接受js和php(.php扩展名)

我试图在服务器端保存邮件,但我不能,因为项目在php中有每个用户的会话,所以..

我尝试在.php扩展名

中保存客户端内的邮件

我尝试的是将输入保存在我写消息的地方,

我将留下客户端代码:

<?php
session_start();
if(!isset($_SESSION["user"])){
  header("location:../login.php");
}
require "../config.php";
$conn = mysqli_connect($hostname,$username,$passw,$database);
$user=mysqli_real_escape_string($conn,$_SESSION["user"];
$q1 = mysqli_query($conn,"SELECT * FROM usuario2 WHERE Usuario = '".$user."'");
while($row = mysqli_fetch_assoc($q1)){
$id = mysqli_real_escape_string($conn, $row['ID']);
}

$query1 = mysqli_query($conn,"SELECT * FROM `chat1` WHERE id_em='$id' OR id_rec='$id'");
while($row = mysqli_fetch_array($query1)){
$row["id_em"];
}

$codroom=$_POST["user3"];

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <?php
        header("Access-Control-Allow-Origin: *");
    ?>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
    <title>Chat con nodejs + socket.io</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
    <style>
    h2 {
      margin-top: 20px;
    }
    .input-group-addon{
      background-color: rgb(2, 117, 216);
      color: #efefef;
    }
    #messages {
      padding: none;
    }
    .chat-window {
      height: 500px;
      border: 1px solid #cccccc;
      margin-bottom: 10px;
      padding: 1rem;
      overflow-y: scroll;
    }
    .msg {
      margin-bottom: 1rem;
    }
.id{
    font-weight: bolder;
}

    </style>
</head>
<body>

    <div class="container">
        <div class="row">
            <div class="col-md-12 text-center">
            <h2>Websocket & Socket.io Chat</h2>
</div>

    <script type="text/javascript">
     var socket = io.connect( 'http://localhost:1334' );

        $(function(){
            $("form").submit(function(){
                var mensaje = $("#msg").val();
                if(mensaje=='') return false;
                if(mensaje==' ') return false;
                //evento message en el server nodejs
                console.log(mensaje)

                socket.emit('message',mensaje);
                $("#msg").val('').focus();
                return false;
            });
            $("#channel").change(function(){
                socket.emit('change channel',$("#channel").val());
            });
        });

        socket.on('message',function(msg){

            $('#message').append($('<p><strong>' + '<?echo $_SESSION["user"]?>' + ': </strong>' + msg + '</p>'));

            $('.chat-window').scrollTop($('#message').height());

        socket.on('change channel',function(channel){
            $("#message").html('').append($('<li>').text('system : Bienvenido al Canal '+channel+' !'));
        });
    </script>

    <div class="col-md-12">
        <div class="chat-window">
              <div id="message"></div>
    </div>
    <div id="controls">

        <form action="" method="post">
            <select name="channel" id="channel">

                <option value="<?echo $codroom?>">Channel A</option>
             <option value="<?echo $codroom?>">Channel B</option>
            </select>

            <div class="col-md-12">
                <div class="input-group enter-chat-message">
                    <input type="text" id="msg" name="a" class="form-control" placeholder="Chat Message...">
                    <input class="input-group-addon submit-chat-message" type="submit" id="btn" name="submit" value="Enviar">
                </div>
            </div>
</div></div>
        </form>

    </div></div></div></div>
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
            <script src="js/bootstrap.js"></script>

</body>
</html>

我试图获取输入表单消息,其名称=&#34; a&#34;用:

if(isset($_POST['submit'])){
      $aa=$_POST['a'];
      $sql4 = "INSERT INTO as3 (aa1) VALUES('$aa')";
      $resultado = mysqli_query($conn, $sql4); // Realizamos la consulta. mysqli_query() parámetros: conexión, consulta
    }

或低于$(&#34;表格&#34;)。submit(function(){

尝试在PHP变量中获取消息以将其插入数据库。

也许我尝试它的事情很容易,但是在node.js和php中使用它有点困难,因为我是一个使用node.js的初学者

对不起,如果我的英语不是很完美, 希望你能帮助我,谢谢!

1 个答案:

答案 0 :(得分:0)

我在这样的项目上工作,我认为最好的解决方案就是为数据库中的每个用户创建一个uid文件 保留NodeJ中聊天部分的所有逻辑。 您还必须使用WebSocket发送消息数据。 您必须发送的数据可能如下所示

{
 "sender_user_uid" : "nsdasdwq324yhjdasjdh548dwadjkhhdt6@e3",
 "message": "Hello",
 "channel_uid": "hbklierokwe,zcsadkwq324545@%#"
}