未加星标

Node.js: TypeError: Object socket.io has no method 'listen'

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏

I'm making a little Node app using socket.io 0.9.13 using Express 3.0.6. I can't seem to anything even starting to run because it says socket.io has no method listen() . Here's my code (compiled coffeescript, so it's a bit ugly):

(function() { var app, express, io, port, usernames; express = require('express'); app = express(); io = require('socket.io'.listen(3000)); port = 3000; app.listen(port); console.log("Listening on port " + port); console.log('CNTRL-C to quit.'); app.engine('hamlc', require('haml-coffee'.__express)); app.get('/', function(request, response) { return response.render('index.hamlc'); }); usernames = {}; io.sockets.on('connection', function(socket) { socket.on('send-chat', function(msg) { return io.sockets.emit('update-chat', socket.username, msg); }); socket.on('add-user', function(username) { socket.username = username; usernames[username] = username; socket.emit('update-chat', 'SERVER', "You have connected as " + username + "."); socket.broadcast.emit('update-users', 'SERVER', "" + username + " has joined the chat."); return io.sockets.emit('update-users', usernames); }); return socket.on('disconnect', function() { delete usernames[socket.username]; io.sockets.emit('update-users', usernames); return socket.broadcast.emit('update-chat', 'SERVER', "" + socket.username + " has disconnected from chat"); }); }); }).call(this);

Which raises the following error:

<strong>node.js</strong>:201 throw e; // process.nextTick error, or 'error' event on first tick ^ TypeError: Object socket.io has no method 'listen' at Object.<anonymous> (/Users/chris/src/web/kouv/app.js:8:28) at Object.<anonymous> (/Users/chris/src/web/kouv/app.js:44:4) at Module._compile (module.js:432:26) at Object..js (module.js:450:10) at Module.load (module.js:351:31) at Function._load (module.js:310:12) at Array.0 (module.js:470:10) at EventEmitter._tickCallback (<strong>node.js</strong>:192:40)

Answer appreciated greatly. :-)

Problem courtesy of: beakr

Solution

Try this:

var express = require('express'), http = require('http'); var app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(3000);

Socket.io essentially hijacks the http object when it runs; express 3.xx no longer runs off the http.server though, so it's necessary to create your own instance of it for socket.io to use.

Solution courtesy of: Ari

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

分页:12
转载请注明
本文标题:Node.js: TypeError: Object socket.io has no method 'listen'
本站链接:https://www.codesec.net/view/611797.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(10)