套接字 - 客户端站点上不显示任何数据

时间:2014-12-30 14:02:58

标签: javascript node.js sockets

我想通过nodejs通过socket.io向我的客户发送数据。

我收到的数据来自推动者。

我正在使用快速后端并像这样加载我的服务器。

#!/usr/bin/env node
var debug = require('debug')('testApp');
var app = require('../app');
var Pusher = require('pusher-client');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function () {
    debug('Express server listening on port ' + server.address().port);
});


/**
 * return pusher data
 */

var API_KEY = 'cb65d0a7a72cd94adf1f';
var pusher = new Pusher(API_KEY, {
    encrypted: true
});

/**
 * Socket.io
 */
var io = require("socket.io").listen(server, {log: true});

io.sockets.on("connection", function (socket) {
    // This will run when a client is connected

    // This is a listener to the signal "something"
    socket.on("data", function (data) {
        var channel = pusher.subscribe("ticker.160");
        channel.bind("message", function (data) {
            console.log(data);
        });
    });

    // This is a signal emitter called "something else"
    socket.emit("something else", {hello: "Hello, you are connected"});
});

在我的客户端上,我运行以下脚本:

index.ejs

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js" />
    <script src='/javascripts/socket.js'></script>
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %> Juhu!</p>

  </body>
</html>

我的 socket.js 文件:

var socket = io.connect(window.location.hostname);
socket.on('data', function(data) {
    var total = data.total;

    //print data to console
    console.log(data);

}); 

我的问题是我的webbrowser中的控制台中没有显示任何内容,即使数据是在我的nodejs应用程序中进行的。

任何建议我做错了什么?

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

我确实认为问题出在您使用时:socket.emit("something else", {hello: "Hello, you are connected"});

但在客户端有这个:socket.on('data', function(data) {

当您发出时,您使用频道“其他”,但在客户端,您正在检查频道“数据”。

因此,在客户端,您应该拥有socket.on('something else', function(data){

希望我能帮到你。我在sockets.io上找不到太多信息,所以我不知道是否有一个名为'data'的预先存在的通道。如果是的话,请告诉我:)