2016-02-09 23 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

我更新了答案,以解決回聲問題。 –

相關問題