Node.js Nodejs simple socket.io示例不工作
我有以下服务器端代码:Node.js Nodejs simple socket.io示例不工作,node.js,socket.io,Node.js,Socket.io,我有以下服务器端代码: var express = require('express') , http = require('http') , routes = require('./routes') , io = require('socket.io') , factory = require('./serverfactory.js'); var app =
var express = require('express')
, http = require('http')
, routes = require('./routes')
, io = require('socket.io')
, factory = require('./serverfactory.js');
var app = express();
var server = app.listen(3000);
io = io.listen(server);
io.sockets.on('connection',function(socket){
console.log('new user');
socket.emit('hail','mysimplemsg');
socket.on('customevent',function(msg){
console.log(msg);
});
});
//var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
这是客户端:
var socket = io.connect('http://localhost:3000');
socket.emit('customevent','work');
socket.on('hail',function(msg){
console.log(msg);
});
我希望我的git控制台
输出新用户
(它有),然后它应该输出工作
(它没有),然后我在浏览器控制台mysimplemsg
(它没有)
为什么服务器端的
customevent
事件没有被调用,而客户端的hail
事件没有被调用,这是怎么回事?我认为问题在于,在连接之前,您正在从客户端发出customevent。尝试添加连接处理程序并将客户端发射移动到其中:
var socket = io.connect('http://localhost:3000');
socket.on('hail',function(msg){
console.log(msg);
});
socket.on('connect',function(){
console.log('connected to socket.io server');
socket.emit('customevent','work');
});
如果未命中连接处理程序,请验证是否正确引用了客户端socket.io javascript库(jade语法):
我终于明白了 它在
opera
上运行正常,但在chrome和firefox上运行不正常。我找到了那个家伙说在服务器端插入这个代码片段的链接
io.configure('development', function(){
io.set('transports', ['xhr-polling']);
});
现在一切正常。查看下面@nFreeze的答案,并查看更多示例Hnx以获取您的答复我按照您所说的做了,但我仍然只能在日志中看到新用户消息nowork
消息显示在我的git中的日志中。socket.on('connect')
不起作用。我调试了代码,但客户端没有在日志中发送任何内容。可能是什么问题?这段代码对我很有用。验证您是否正确托管socket.io客户端库。是的,我托管的是正确的。我不知道为什么不触发此事件,这让我抓狂。我从3天起就遇到了此问题。我从socket.io/#如何使用
复制粘贴了完全相同的代码,但仍然存在相同的问题。抱歉,我忘了在嗯,我想对websocket使用socket.io,而不是xhr轮询。这不是解决办法。
io.configure('development', function(){
io.set('transports', ['xhr-polling']);
});