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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用websocket节点js和php中的输入表单保存消息相关的知识,希望对你有一定的参考价值。

欢迎大家,在我的项目中,我用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>

我试图获取输入表单消息,其名称=“a”:

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
    }

或低于$(“表格”)。submit(function(){

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

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

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

答案

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

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

以上是关于使用websocket节点js和php中的输入表单保存消息的主要内容,如果未能解决你的问题,请参考以下文章

在节点JS中为WebSocket(ws)使用自签名CA证书

PHP中的模拟js websockets

从 C# 程序连接基于 node.js 的 socket.io WebSocket 服务器

如何处理来自服务器(节点 js)中表单的数据? [复制]

如何在节点 js 服务器中创建通道 websocket

20php表单的使用