我想通过 socket.io
通过 NodeJS 将数据发送到我的客户端。
我收到的数据来自推送器。
我正在使用快速后端并像这样加载我的服务器。
#!/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);
});
我的问题是,即使数据传入我的 Nodejs 应用程序,我的网络浏览器的控制台中也没有显示任何内容。
有什么建议我做错了什么吗?
感谢您的回复!
最佳答案
我确实相信问题出在您使用时: socket.emit("something else", {hello: "Hello, you areconnect"});
但在客户端有这个:socket.on('data', function(data) {
.
当您发射时,您使用“其他” channel ,但在客户端您正在检查“数据” channel 。
因此,在客户端,您应该使用 socket.on('something else', function(data){
。
希望我有帮助。我在 sockets.io 上找不到太多信息,所以我不知道是否有一个名为“data”的预先存在的 channel 。如果是的话请告诉我:)
关于javascript - 套接字 - 客户端站点上不显示任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27706846/