node.js的socket.io未按预期工作
我使用node.js+socket.io创建了一个简单的聊天应用程序。当我尝试运行它时,它并没有按预期运行:它不断地从客户端发送请求。我已经在两个(客户端/服务器)端配置了传输设置:node.js的socket.io未按预期工作,node.js,socket.io,Node.js,Socket.io,我使用node.js+socket.io创建了一个简单的聊天应用程序。当我尝试运行它时,它并没有按预期运行:它不断地从客户端发送请求。我已经在两个(客户端/服务器)端配置了传输设置:['jsonp-polling','xhr polling']。我尝试设置[“关闭超时”:10],但这并没有改变任何事情。我不明白这里发生了什么 我认为我的连接断了,正如我在日志文件(最后)中看到的那样 以下是我的代码: 服务器端:app.js ~~~~~~~~~~~~~~~~~~~~ var sio = requi
['jsonp-polling','xhr polling']
。我尝试设置[“关闭超时”:10]
,但这并没有改变任何事情。我不明白这里发生了什么
我认为我的连接断了,正如我在日志文件(最后)中看到的那样
以下是我的代码:
服务器端:app.js
~~~~~~~~~~~~~~~~~~~~
var sio = require('socket.io');
var io = sio.listen(app)
io.configure(function () {
io.enable('browser client minification');
io.enable('browser client etag');
io.enable('browser client gzip');
io.set('log level', 3);
});
io.on('connection', function (client) {
client.on('message', function (msg) {
socket.broadcast(msg);
});
client.on('disconnect', function () {
});
});
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script>
$(document).ready(function () {
var socket = new io.Socket("localhost", {port: 8080});
socket.on('connect', function () {
socket.send('A client connected.');
});
socket.on('message', function (message) {
$('div#messages').append($('<p>'), message);
});
socket.on('disconnect', function () {
console.log('disconnected');
});
socket.connect();
$('input').keydown(function (event) {
if(event.keyCode === 13) {
socket.send($('input').val());
$('input').val('');
}
});
});
</script>
</head>
<body>
<input type="text" style="width: 300px;" />
<div id="messages" style="border:solid 1px #000;"> </div>
</body>
</html>
客户端:index.html
~~~~~~~~~~~~~~~~~~~~~~~~
var sio = require('socket.io');
var io = sio.listen(app)
io.configure(function () {
io.enable('browser client minification');
io.enable('browser client etag');
io.enable('browser client gzip');
io.set('log level', 3);
});
io.on('connection', function (client) {
client.on('message', function (msg) {
socket.broadcast(msg);
});
client.on('disconnect', function () {
});
});
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script>
$(document).ready(function () {
var socket = new io.Socket("localhost", {port: 8080});
socket.on('connect', function () {
socket.send('A client connected.');
});
socket.on('message', function (message) {
$('div#messages').append($('<p>'), message);
});
socket.on('disconnect', function () {
console.log('disconnected');
});
socket.connect();
$('input').keydown(function (event) {
if(event.keyCode === 13) {
socket.send($('input').val());
$('input').val('');
}
});
});
</script>
</head>
<body>
<input type="text" style="width: 300px;" />
<div id="messages" style="border:solid 1px #000;"> </div>
</body>
</html>
有人能建议如何调试这个问题或者问题到底是什么吗
io.on('connection', function (client) {
应该是(…io.sockets.on.)
client.on('message', function (msg) {
socket.broadcast(msg);
应该是
client.broadcast(msg);
(socket
未在任何地方定义)您可以根据需要配置socket.io设置
我也遇到了同样的问题,发现添加下面的行可以解决问题
io.set('transports',['xhr-polling']);