gpt4 book ai didi

javascript - socket.io 客户端无法向服务器发送消息

转载 作者:行者123 更新时间:2023-12-03 02:19:59 26 4
gpt4 key购买 nike

我不明白为什么我的 socket.io 服务器没有从客户端接收消息。这是我的服务器 JS 文件:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){

console.log('a user connected');

socket.on('bid', function(msg){
console.log('received:' + msg);
});

socket.on('disconnect', function(){
console.log('user disconnected');
});
});

http.listen(3000, function(){
console.log('listening on *:3000');
});

这是客户端代码:

$(function () {

var socket = io(':3000/socket.io/socket.io.js');

$('#bid-form').on('submit',function(){
socket.emit('bid', 'test');
console.log('emit');
return false;
});
});

当我打开和关闭浏览器页面时,我在服务器控制台上看到“用户已连接”和“用户已断开连接”消息,因此我知道它正在建立连接。

当我提交表单时,我在浏览器控制台中看到“发出”消息,因此我知道表单提交事件正在触发,但我没有在服务器上收到测试消息。客户端或服务器端似乎没有发生任何事情,似乎“socket.emit”函数没有执行任何操作。

我做错了什么?

最佳答案

我的假设是您正在 localhost 上运行 Express 服务器。

看起来您正在通过 file:// 直接访问 HTML 文件,除非您的客户端代码由不同的 Web 服务器托管。但无论如何,您可以通过以下方式进行连接:

<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function () {
var socket = io("http://localhost:3000");
$('#bid-form').on('submit',function(){
socket.emit('bid', 'test');
console.log('emit');
return false;
});
});
</script>

您需要通过 script 标记加载 socket.io.js 文件。然后通过将 socket.io 服务器的主机提供给 io() 函数来连接到您的 socket.io 服务器。

关于javascript - socket.io 客户端无法向服务器发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49204236/

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