2016-02-09 25 views
0

我在节点中使用express + ejs作为视图引擎。在通过套接字发送消息时遇到问题。我的主文件名 是index.js,而查看文件是pages/messages,即ejs 文件。我使用将套接字数据发送到nodejs中的特定ejs页面

app.get('/messages/:id', function(req,res)   { 
      res.render('pages/messages'); 

      }); 

io.sockets.on('connection', function(socket) { 

    socket.on('chat message', function(msg) {  console.log(msg); socket.emit('chat message', msg); 

     }); 
}); 

以上代码我使用中即index.js主文件和下面的代码作为前端

<script src="/socket.io/socket.io.js"></script> 
<script src="http://code.jquery.com/jquery-1.11.1.js"></script> 

<script> var socket = io(); 
    $(document).ready(function() 
{ $('form').submit(function(e){ 
alert('1');  
e.stopPropagation();  
e.preventDefault(); 
     socket.emit('chat message', $('#m').val(), ''); 
     $('#m').val(''); 
     return false; }); 
      socket.on('chat message', function(req, res){ 
     $('#messages').append($('<li>').text(res)); 
       }); }); 
</script> 




<ul id="messages"></ul> 

     <form action="" > 
      <input id="m" autocomplete="off" /><button>Send</button> 
     </form> 

后EMIT里包含空数据。

+0

请写在一个更可读的格式。 –

+0

你好阿曼我实际上不能给我的编辑权限允许添加更多的格式 –

+0

请检查它是否可读吗? –

回答

0

req,res params适用于快速路线,而不适用于socket events。做如下更改,并检查它是否工作:

socket.emit('chat message', $('#m').val()); 

socket.on('chat message', function(data){ 
    $('#messages').append($('<li>').text(data)); 
}); 

在你的后端,将其更改为要解决回声问题:

io.sockets.on('connection', function(socket) { 
    socket.on('chat message', function(msg) {    
     console.log(msg);   
     socket.broadcast.emit('chat message', msg); 

    }); 
    }); 
+0

其显示的数据,但它的重复这样 “simmi simmi 快乐 快乐 快乐” –

+0

我不得不通过Web服务来第二用户谁在网上与发这条消息我 –

+0

我更新了答案,以解决回声问题。 –

相关问题