Socket.io 无法在控制台中记录聊天消息
Socket.io failing to log chat message in console
我正在浏览 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);
});
});
我已经开始工作了!
解决步骤:
- 将带有事件监听器的脚本标签分离到一个单独的 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错误;我在页面顶部加载脚本(按照教程的建议),表单上的事件侦听器从未注册。
我正在浏览 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);
});
});
我已经开始工作了!
解决步骤: - 将带有事件监听器的脚本标签分离到一个单独的 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错误;我在页面顶部加载脚本(按照教程的建议),表单上的事件侦听器从未注册。