socket.on不在客户端工作

时间:2017-01-19 20:54:38

标签: javascript node.js socket.io vue.js

我正在研究nodejs + vuejs + socket.io 测试在服务器端和客户端发送消息和恢复。

在服务器端正在运行,我正在接收控制台(消息:文本) 但是,客户端的console.log无效。什么都没有出现。

的index.html:

<script src="/socket.io/socket.io.js"></script>
<body>
     <div class="container" id="todo">
      <h1><%= title %></h1>
      <h3>{{subtitle}}</h3>
      <p>Welcome to <%= title %></p>
      <div id="app-5">
       <p>{{ subtitle }}</p>
       <button v-on:click="sendMessage">Send Message</button>
      </div>
     </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="/javascripts/app.js"></script>

app.js:

var socket = io();

var vm = new Vue({
 el: '#todo',
  data: {
   subtitle: 'Hello Vue.js!',
   text: 'Hello Friends',
   menssages: []
 },
 methods: {
  sendMessage: function () {
   socket.emit('chat message', this.text);
  }
}
});

socket.on('chat message', function(msg){
 console.log('Client side message: ' + msg)
});

nodejs服务器:

io.on( "connection", function( socket ) {
console.log( "A user connected" );

socket.on('chat message', function(msg){
  console.log('messagem: ' + msg);
});
});

我正在接收终端服务器上的消息。但是没有收到浏览器上的console.log('Client side message: ' + msg)

1 个答案:

答案 0 :(得分:3)

这主要是一个socket.io问题。您正在从客户端发出一个事件:

cell.contentView.viewWithTag(10)?.removeFromSuperview()

然后在服务器上侦听该事件:

socket.emit('chat message', this.text);

这是有道理的,正如你所说的那样,工作正常:消息被记录在服务器上。

但是,听取客户端上的socket.on('chat message', function(msg){ console.log('messagem: ' + msg); }); 事件:

chat message
服务器 发出此事件之前,

无效。

换句话说,尝试执行:

socket.on('chat message', function(msg){
 console.log('Client side message: ' + msg)
});

在服务器上 ,以查看socket.emit('chat message', 'Hello World.'); 登录客户端。