Python ReferenceError:未定义套接字

Python ReferenceError:未定义套接字,python,node.js,python-2.7,socket.io,Python,Node.js,Python 2.7,Socket.io,我有一个python脚本,它在每次恢复新值时向node.js服务器发送数据 下面是我的代码客户端(python脚本): 这是我的node.js服务器: var path = require('path'); var fs = require('fs'); var mysql = require("mysql"); var express = require('express'); var app = express(); var server = app.listen(8080); cons

我有一个python脚本,它在每次恢复新值时向node.js服务器发送数据

下面是我的代码客户端(python脚本):

这是我的node.js服务器:

var path = require('path');
var fs = require('fs');
var mysql = require("mysql");
var express = require('express');

var app = express();

var server = app.listen(8080);
console.log('Server listening on port 8080');

var io = require('socket.io')(server);

io.sockets.on('connection', function () {
    console.log("client connected");

    socket.on('newValues', function (data) {
            console.log("new values : "+data);      
    });
});
问题:

每次我的python脚本接收到新数据时,都必须发出一条消息。我的节点服务器停止并显示此错误:

node server.js

Server listening on port 8080
client connected
C:\project\src\server\server.js:26

socket.on('newValues', function (data) {
    ^

ReferenceError: socket is not defined
    at Namespace.<anonymous> (C:\project\src\server\server.js:26:5)
    at emitOne (events.js:90:13)
    at Namespace.emit (events.js:182:7)
    at Namespace.emit (C:project\node_modules\socket.io\lib\nam
espace.js:206:10)
    at C:\project\node_modules\socket.io\lib\namespace.js:174:14

    at nextTickCallbackWith0Args (node.js:452:9)
    at process._tickCallback (node.js:381:13)
node server.js
服务器侦听端口8080
客户端连接
C:\project\src\server\server.js:26
socket.on('newValues',函数(数据){
^
ReferenceError:未定义套接字
在命名空间中。(C:\project\src\server\server.js:26:5)
在emitOne(events.js:90:13)
位于Namespace.emit(events.js:182:7)
位于Namespace.emit(C:project\node\u modules\socket.io\lib\nam
(espace.js:206:10)
在C:\project\node\u modules\socket.io\lib\namespace.js:174:14
在下一个TTickCallbackwith0args(node.js:452:9)
在进程中调用(node.js:381:13)
有人知道这个错误吗?

当你写的时候

socket.on( 'newValues' , ...)
它假设“socket”是一个变量,如果是,则在调用之前尚未定义它

我不太了解IO,但试试这个:

io.sockets.on( 'newValues' , ...)
当你写作时

socket.on( 'newValues' , ...)
它假设“socket”是一个变量,如果是,则在调用之前尚未定义它

我不太了解IO,但试试这个:

io.sockets.on( 'newValues' , ...)

未定义套接字。您需要将套接字传入io.sockets.on回调函数

io.sockets.on('connection', function (socket) {    //Pass socket here
    console.log("client connected");

    socket.on('newValues', function (data) {
        console.log("new values : "+data);      
    });
}

编辑:这是我第一眼看到的最佳猜测解决方案。我对sockets.io不是很有经验。我只是在看文档(在这个链接中有一个类似的例子)

socket没有定义。你需要将socket传递到io.sockets.on回调函数中

io.sockets.on('connection', function (socket) {    //Pass socket here
    console.log("client connected");

    socket.on('newValues', function (data) {
        console.log("new values : "+data);      
    });
}
编辑:这是我第一眼看到的最佳猜测解决方案。我对sockets.io不是很有经验。我只是在看文档(这个链接上有一个类似的例子)

注释“此处传递套接字”帮助很大!注释“此处传递套接字”帮助很大!