【问题标题】:Socket io implementation, Getting TypeError('"listener" argument must be a function')Socket io 实现,Getting TypeError('"listener" argument must be a function')
【发布时间】:2018-01-18 13:36:24
【问题描述】:

我正在尝试用我的 Angular Js 项目实现 Socket IO。我是新手,请帮忙。

这是我的 server.js 文件

var express = require('express');
var path = require('path');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = 8080;

app.use(express.static(path.join(__dirname, "app")));

io.on('connection'), function(socket){
    console.log('new connection made');
}

server.listen(port, function(){
    console.log('Listening to port '+ port);
})

我已经从 socket.io-client 复制了 socket.io.js 文件并将它放在我的 lib 文件夹中。所以我的 index.html 有

<script src="lib/js/socket.io.js"></script>
//all other includes required

<body>
     //code here
</body>

这是我在执行 nodemon server.js

时看到的错误
[nodemon] starting `node server.js`
events.js:216
    throw new TypeError('"listener" argument must be a function');
    ^

TypeError: "listener" argument must be a function
    at _addListener (events.js:216:11)
    at Namespace.addListener (events.js:275:10)
    at Server.(anonymous function) [as on] 
 (D:\SocketIOExperiment\ProjExperiment\node_modules\socket.io\lib\index
 .js:456:29)
at Object.<anonymous> 
(D:\SocketIOProject\SmartAdminExperiment\server.js:11:4)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
  [nodemon] app crashed - waiting for file changes before starting...

【问题讨论】:

    标签: javascript websocket socket.io


    【解决方案1】:

    代码中的小错字。试试这个:

    var express = require('express');
    var path = require('path');
    var app = express();
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    var port = 8080;
    
    app.use(express.static(path.join(__dirname, "app")));
    
    io.on(('connection'), function(socket){
        console.log('new connection made');
    })
    
    server.listen(port, function(){
        console.log('Listening to port '+ port);
    })
    

    请记住,io.on(event,cb) 是将 cb 函数注册到事件的函数调用。

    【讨论】:

    • 非常感谢 Vinoth。你是救生员
    猜你喜欢
    • 2014-07-26
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2017-04-08
    • 2017-03-09
    • 2019-06-18
    • 2016-11-13
    • 2022-12-26
    相关资源
    最近更新 更多