2016-03-22 76 views
0

我有一个python脚本,它会在每次恢复新值时向我的node.js服务器发送数据。ReferenceError:套接字未定义

这里是我的代码,客户端(python脚本):

from socketIO_client import SocketIO 

... 

def update_db(dateUpdate, res, nameIndex): 
    try: 
     with SocketIO('192.168.100.103', 8080) as socketIO: 
      socketIO.emit('newValues', res) 

    except Exception as e: 
     print "error socketIO - Impossible to emit data \n" 

    #Update database 

while True: 
    #If new value 
     dateUpdate = time.strftime('%Y-%m-%d %H:%M:%S') 
     update_db(dateUpdate, res, nameIndex[i]) 
     break 

这里是我的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);  
    }); 
}); 

问题:

Eache时间我的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) 

任何知道错误?

回答

4

插座。您需要将套接字传递给您的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不是很有经验。我只是看着文档(在这个链接有一个类似的例子)http://socket.io/docs/

0

当你写

socket.on('newValues' , ...) 

这是假设 “套接字” 是一个变量。如果是这样,那么在该呼叫之前还没有定义它。

我不知道IO很好,但尝试这个:没有定义

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