2016-09-29 73 views
0

我想做一个简单的应用程序使用节点,并表达我可以与套接字共享实时数据。无论我尝试什么,我都无法让服务器或客户端互相发送消息。插座不通信

服务器:

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io')(server); 

//set location for views 
app.set('views', __dirname + '/views'); 
//set location for static files 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use('/scripts', express.static(__dirname + '/node_modules/')); 

//create route 
app.get('/', function(req, res) { 
    res.render('home.jade'); 
}); 

//Connection listener for io object 
io.on('connection', function(socket){ 
    console.log('A user has connected'); 
    socket.on('test', function(data){ 
     console.log(data); 
    }); 
}) 

server.listen(3000, "localhost"); 

客户:

var socket = io.connect('http://:localhost:3000'); 

$(document).on('click', '#submit-message', function() { 
    socket.send('test', {contents: "hello"}); //static for now 
}); 
+0

您是否在服务器或浏览器调试控制台中看到任何错误?你有的结构看起来一般都很好,所以一定会有一些错误触发某种错误。您需要查看该错误是什么 - 希望在控制台中作为日志消息,或者通过检查浏览器中的网络选项卡来查看网页中的连接情况。 – jfriend00

+0

'http://:localhost:3000'是一个无效的URL。 – robertklep

+0

我在浏览器中没有任何错误。我知道该URL看起来很奇怪,但它不起作用,如果我把http:// localhost:3000 –

回答

1

现在它应该工作..

客户端:

var socket = io(); 

$(document).on('click', '#submit-message', function() { 
    socket.emit('test', {contents: "hello"}); //static for now 
}); 

的问题是,socket.send总是发出'消息'事件,它的作用就像socket.emit('message',{contents:“hello”})。如果你在客户端socket.send你必须socket.on('message',function(data){});在服务器中。

+0

我试着发出,但是没有工作 –

+1

和var socket = io(); – mk12ok

+0

你的男人+1。我从socket = io()中删除了connect(ip地址);它的工作 –