【发布时间】:2018-08-12 02:27:09
【问题描述】:
控制台记录“连接到套接字”,所以它似乎正在连接,但似乎没有触发任何事件,即使在服务器中 io.on 内的“断开连接”时也是如此。
“socket.on”似乎不起作用
服务器端
var server = app.listen(app.get('port'), () => {
console.log('%s App is running at http://localhost:%d in %s mode', chalk.green('✓'), app.get('port'), app.get('env'));
console.log(' Press CTRL-C to stop\n');
});
var io = socket(server);
io.on('connection', function(socket){
console.log('connection to socket made');
socket.on('chat message', function(msg){
console.log('message: ' + msg);
});
});
客户
ul.pages
li.chat.page
div.chatArea
ul.messages
input.inputMessage(placeholder='Type here...')
li.login.page
.form
h3.title What's your nickname?
input.usernameInput(type="text", maxlength="14")
script(src="/socket.io/socket.io.js")
script(src="https://code.jquery.com/jquery-1.11.1.js")
script.
$(function () {
var socket = io('http://localhost:8080/chat', {transports: ['websocket']});
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});
【问题讨论】:
-
你没有一个 id=m $('#m').val() 的元素
-
即使我添加了
input#m.inputMessage(placeholder='Type here...'),它也没有做任何事情。我在控制台中看到的唯一内容仍然是“连接到套接字”。我没有将它包含在代码中,但我也将 $('#m').val() 替换为纯字符串,以查看 jquery 是否导致问题,但控制台中仍然没有打印任何内容。跨度>