我正在浏览Socket.io tutorial on creating a chat room,但我无法让我的应用将聊天消息记录到控制台。
当用户连接&断开连接,但是在传递消息时没有记录。
有什么想法吗?
index.html页面的相关部分:
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function() {
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
</script>
<body>
<ul id="messages"><ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
</body>
我的index.js文件:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static('public'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('chat message', function(msg) {
console.log("message: " + msg);
});
});
答案 0 :(得分:0)
我已经开始工作了!
解决方案的步骤: - 将脚本标记与事件侦听器分离为单独的JS文件 - 将JS文件包含在脚本标记最初所在的位置 - 文档准备好后加载chatListener
我的文件现在看起来像这样,一切都很美妙:
<强>的index.html:强>
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script src="main.js"></script>
<body>
<ul id="messages"><ul>
<form action="">
<input class="chat" id="m" autocomplete="off" />
<input class="btn" type="submit" value="Send" />
</form>
</body>
index.js:没有变化
<强> main.js:强>
var socket = io();
var chatListener = function() {
$('form').submit(function() {
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
}
$(document).ready(function() {
chatListener();
})
最后,我认为这是初学者的JS错误;我正在页面顶部加载脚本(如教程建议的那样),并且表单上的事件监听器从未注册过。