我正在研究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)
。
答案 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.');
登录客户端。