2016-09-29 68 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地址);它的工作 –