我在我的项目中使用socket.io并且无法向服务器发送数据,因此我设置了一个简单的测试用例。我已经在Google Chrome中创建了一个文件index.html
(使用文件://地址):
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script type="text/javascript">
var socket = io('http://localhost:8080');
socket.emit('clientDetails', {hello: 'world'});
socket.on('connect', function() {
socket.emit('clientDetails', {hello: 'world'});
});
</script>
</head>
<body></body>
</html>
我的节点服务器上有这个真实的实现代码:
var app = require('http').createServer();
var io = require('socket.io')(app);
// Make the server listen on porr 8080
app.listen(8080);
io.on('connect', function(socket) {
console.log("Client connected");
});
io.on('clientDetails', function(socket) {
console.log("Got client details");
});
当我在Chrome中加载HTML页面时,我收到Node打印的Client connected
消息。一切都很好。但我从未见过Got client details
字符串。
我怀疑服务器有问题,因为查看Chrome的网络工具我可以看到数据被发送到服务器,至少我认为这是:
为什么我无法捕获客户端向服务器发送数据?
答案 0 :(得分:1)
Per the docs,以下内容:
io.on('connect', function(socket) {
console.log("Client connected");
});
io.on('clientDetails', function(socket) {
console.log("Got client details");
});
应该是
io.on('connect', function(socket) {
console.log("Client connected");
socket.on('clientDetails', function(data) {
console.log("Got client details");
});
});