2015-10-04 3 views
0

У меня есть этот index.js файл на клиенте:Socket.io гнездо испускают не называется

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») на клиенте.

После дополнительного тестирования кажется, что идентификатор сокета не определен: this.id возвращает неопределенный.

ответ

0

Вы должны добавить кавычки, чтобы параметры в функции socket.emit так:

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

Это не помогло. – TastyLemons

+0

Не могли бы вы добавить свой html-файл? –

0

Вы должны инициализировать переменную сокета через io.connect («адрес сервера») и имеет я вижу в вашем коде, не передали ни одного параметра в io.connect . Если сервер находится на вашей локальной машине, подключитесь к нему через io.connect («http://localhost»). Для получения дополнительной информации см. Документы. socket.io-client

Смежные вопросы