Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在发件人端向其他人广播两次聊天信息_Node.js_Laravel_Redis - Fatal编程技术网

Node.js 在发件人端向其他人广播两次聊天信息

Node.js 在发件人端向其他人广播两次聊天信息,node.js,laravel,redis,Node.js,Laravel,Redis,我正在使用laravel+socet.io+redis开发一个聊天应用程序,并使用MYSQL存储聊天信息 <script> var socket = io('http://localhost:6001'); socket.on('chat:message',function(data){ console.log(data) if($('#'+data.id).length == 0){ $('#data')

我正在使用laravel+socet.io+redis开发一个聊天应用程序,并使用MYSQL存储聊天信息

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
所有流程都正常工作,但我面临一个问题。 就是

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
当发件人向聊天室发送消息时,该消息首先存储在数据库中,然后发送到其他客户端Think redis事件

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
因此,在这种情况下,一条消息在发送方窗口重复两次。其他客户端聊天室工作正常。 下面我为发送方和接收方窗口附上两张图片。(*它们在同一个聊天室)

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
这是我的HTML、redis+nodeserver编码部分

<html>
  <body>

   <div id="data">
     @foreach($messages as $message)
     <p id="{{$message->id}}">database_<strong>{{$message->Sender}}
   </strong>: 
     {{$message->MessageTxt}}</p>
     @endforeach
   </div>

  <div>
  <form action="sendMessaged" method="POST">
{{csrf_field()}}
Name: <input type="text" name="Sender">
<br>
<br>
Content: <textarea name="MessageTxt" rows="5" style="width:100%">
</textarea>
<button type="submit" name="send">Send</button>
 </form>
 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
把这行改成

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
socket.emit(channel+":"+message.event,message.data.message);
对此

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
socket.broadcast.emit(channel+":"+message.event,message.data.message);
为了供你参考,我列出了所有可能的场景

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
仅发送到发送方客户端

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
socket.emit(channel+":"+message.event,message.data.message);
发送到所有客户端,包括发件人

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
io.emit(channel+":"+message.event,message.data.message);
io.in('game').emit(channel+":"+message.event,message.data.message);
io.of('myNamespace').emit(channel+":"+message.event,message.data.message);
发送至“游戏”室(频道)中的所有客户端(发件人除外)

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
socket.broadcast.to('game').emit(channel+":"+message.event,message.data.message);
发送至“游戏”室(频道)中的所有客户端,包括发送者

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
io.emit(channel+":"+message.event,message.data.message);
io.in('game').emit(channel+":"+message.event,message.data.message);
io.of('myNamespace').emit(channel+":"+message.event,message.data.message);
发送至发送方客户端,仅当他们在“游戏”室(频道)时

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
正在发送到命名空间“myNamespace”中的所有客户端,包括发件人

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
io.emit(channel+":"+message.event,message.data.message);
io.in('game').emit(channel+":"+message.event,message.data.message);
io.of('myNamespace').emit(channel+":"+message.event,message.data.message);
发送到单个socketid

 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});     
socket.broadcast.to(socketid).emit(channel+":"+message.event,message.data.message);

希望这对您有所帮助

您必须在客户端执行此操作,因为中间涉及到代理。我为连接到客户端实现API。因此,我如何处理它非常感谢您的帮助。我尝试了这些方法。但同样的问题,@androidpc,正如我已经告诉您的那样。。。您在代理的后面,因此必须在客户端执行此操作
 <script>
    var socket = io('http://localhost:6001');
     socket.on('chat:message',function(data){
      console.log(data)       

       if($('#'+data.id).length == 0){
        $('#data').append('<p>else__<strong>'+data.Sender+'</strong>: '+data.MessageTxt+'</p>')
    }
    else{

    }
});