Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未调用Socket.io套接字发出_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 未调用Socket.io套接字发出

Javascript 未调用Socket.io套接字发出,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我在客户端上有一个index.js文件: var socket; var init = function() { // Setup Socket: socket = io.connect(); // Setup Event Handlers: setEventHandlers(); // Connect to Server: socket.emit('connect', { name : "User Name" });

我在客户端上有一个index.js文件:

var socket;

var init = function() {
    // Setup Socket:
    socket = io.connect();

    // Setup Event Handlers:
    setEventHandlers();

    // Connect to Server:
    socket.emit('connect', {
        name : "User Name"
    });

    console.log("Client Init Complete.");
}

var setEventHandlers = function() {
    // Set Routes For Connections
    socket.on("connection resp", onConnected);
}

var onConnected = function(data) {
    console.log(data.resp);
}
我在服务器上有以下代码:

// SETUP:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var request = require('request');
var path = require('path');
var socket = require('socket.io')(http);
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0';
var bodyParser = require('body-parser')
var fs = require('fs');

// SETUP:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended : false
}));
app.configure(function() {
    app.use(express.static(path.join(__dirname, 'public')));
})

var setEventHandlers = function() {
    socket.sockets.on("connection", onInit); 
};

var onInit = function(client) {
    client.on("connect", onConnect);
};

var onConnect = function(data) {
    console.log("Called");
}

// Send index page html
app.get('/', function(req, res) {
    res.sendfile("public/html/index.html");
});

// Turn on server
http.listen(server_port, server_ip_address, function() {
    console.log("App Listening on " + server_ip_address + ", server_port "
            + server_port);
});

setEventHandlers();
问题是永远不会调用服务器上onConnect上的。即使我在客户端上调用socket.emit(“connect”)


进一步测试后,套接字id似乎未定义:this.id返回未定义。

您需要在
socket.emit
函数中的参数中添加引号,如下所示:

// Connect to Server:
    socket.emit('connect', {
        'name' : 'User Name'
    });

您应该通过io.connect(“服务器地址”)初始化套接字变量,我在代码中看到您没有向io.connect传递任何参数 。如果服务器位于本地计算机中,则通过io连接到它。连接(“”)。
有关更多信息,请参阅文档

你能添加你的html文件吗?