2014-09-21 53 views
0

我将把我的php网页与node.js和socket.io集成在一起。 客户端可以连接到node.js服务器文件,但是socket.emit函数不能从客户端到服务器或返回。 这里是我的nodeClient.js文件:集成node.js,socket.io和php网页

var socket = io.connect('http://192.168.0.10:8080/index3.php'); 

$("#messageForm").submit(function() { 
    var nameVal = $("#nameInput").val(); 
    var msg = $("#messageInput").val(); 

socket.emit('message', { name: nameVal, message: msg }); 

// Ajax call for saving datas 
$.ajax({ 
    url: "./ajax/insertNewMessage.php", 
    type: "POST", 
    data: { name: nameVal, message: msg }, 
    success: function(data) { 
    } 
}); 

return false; 
}); 

socket.on('new message', function(data) { 
    var actualContent = $("#messages").html(); 
    var newMsgContent = '<li> <strong>' + data.name + '</strong> : ' + data.message + '</li>'; 
    var content = newMsgContent + actualContent; 

    $("#messages").append(newMsgContent); 
}); 

这里是nodeServer.js文件:

var socket = require('socket.io'); 
var express = require('express'); 
var http = require('http'); 

var app = express(); 
var server = http.createServer(app); 
var io = socket.listen(server); 

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

client.on('message', function(data) { 
    console.log('Message received ' + data.name + ":" + data.message); 

    //client.broadcast.emit('message', { name: data.name, message: data.message }); 
    io.sockets.emit('new message', { name: data.name, message: data.message }); 
}); 
}); 

server.listen(8080, function(){ 
    console.log('listening on *:8080'); 
}); 

的Ajax的工作原理将数据存储在MySQL。每个连接的客户端都被识别为“新客户端!”。但客户端和服务器之间没有消息通信。我的代码中可能存在什么问题。

回答

0

纠正你的JSON的语法,而不是在客户端写的:

socket.emit('message', { name: nameVal, message: msg });

socket.emit('message', { "name": nameVal, "message": msg });

同在服务器端,你居然错过了双引号,而写的值名称在json对象

+0

我改变了代码,但没有工作...... – Ahad 2014-09-22 17:18:26