gpt4 book ai didi

express - socket.io 和 express 服务器没有收到客户端发出的信号

转载 作者:行者123 更新时间:2023-12-05 06:36:28 25 4
gpt4 key购买 nike

控制台记录“已连接到套接字”,因此它似乎正在连接,但似乎没有触发任何事件,即使在服务器的 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;
});
});

最佳答案

如果有人有同样的问题,我犯了一个简单的错误,但如果有人能准确解释发生了什么,那就太好了。

似乎我没有在客户端监听“connect”,所以客户端没有调用任何东西。最重要的是,我有 jquery 选择器选择表单类而不是表单元素。

我一添加 socket.on('connect',...) socket.emit 就开始工作了,我很快就能让 jquery 语句也能正常工作。

tldr;

确保在客户端也打开连接事件 (socket.on('connect',...))。

客户

script.
$(function () {
var socket = io('http://localhost:8080', {transports: ['websocket']});
socket.on('connect', function(){
console.log("connected on client!");
socket.emit('chat message', "hello there");
$('form').submit(function(){
console.log("form submitted");
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
})

});

关于express - socket.io 和 express 服务器没有收到客户端发出的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com