节点服务器,Socket.io'io没有定义'?

Jac*_*ack 13 node.js socket.io

我已经按照以前一直为我工作的完全相同的步骤,通过express创建应用程序,将模块依赖项放在node_modules文件夹中.似乎找不到socket.io客户端javascript文件.

(我已经查看了其他人的修复,这是在脚本选项卡中包含JavaScript文件.我没有必要为我之前的节点+ socket.io项目执行此操作).

客户端上的JavaScript:

var socket = io.connect('http://localhost');
Run Code Online (Sandbox Code Playgroud)

服务器上的JavaScript:

var io = require('socket.io').listen(app);
Run Code Online (Sandbox Code Playgroud)

node_modules文件夹:

socket.io, which has an internal node_modules folder containing socket.io-client
Run Code Online (Sandbox Code Playgroud)

错误信息:

Uncaught ReferenceError: io is not defined
(anonymous function)
Run Code Online (Sandbox Code Playgroud)

当我手动包含socket.io客户端时: http ://cdn.socket.io/stable/socket.io.js

我得到一个不同的错误:

Uncaught TypeError: Object #<Object> has no method 'connect'
(anonymous function)
Run Code Online (Sandbox Code Playgroud)

Jor*_*eña 13

在客户端,你做了:

<script src="/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

在设置socket变量之前?


adi*_*yah 5

Node.js 新手来了!我很确定这已经得到了回答。但是我一直在寻找套接字 src 的问题。显然这 :<script src="/socket.io/socket.io.js">在客户端对我不起作用。

我已经用这个替换了上面的行,它似乎工作正常。

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
Run Code Online (Sandbox Code Playgroud)

(编辑:虽然这很明显,但根据您阅读此答案的时间,此链接可能不起作用。请从以下位置选择最新链接:https : //cdnjs.com/libraries/socket.io

这是一个有效的客户端代码:

<body>

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>

<script>
    $(function(){
        var socket = io('http://localhost:8080');
        console.log("Socket connected"+socket.connected);

        socket.on('notification', function(value){
            //insert your code here
        });
    });

</script>
Run Code Online (Sandbox Code Playgroud)

在服务器端(仅处理 1 个套接字)

var app  = require('express')();
var http = require('http').Server(app);
var io   = require('socket.io')(http);
var port = process.env.PORT || 8080;


app.get('/', function(req, res){
    console.log("app works");
});

io.on('connection', function(socket){
    socket.emit('notification', {message:"hi"});
});

http.listen(port, function(){
    console.log('listening on :' + port);
});
Run Code Online (Sandbox Code Playgroud)