我想通过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应用程序中进行的。
任何建议我做错了什么?
感谢您的回复!
答案 0 :(得分:1)
我确实认为问题出在您使用时:socket.emit("something else", {hello: "Hello, you are connected"});
但在客户端有这个:socket.on('data', function(data) {
。
当您发出时,您使用频道“其他”,但在客户端,您正在检查频道“数据”。
因此,在客户端,您应该拥有socket.on('something else', function(data){
。