Nodejs-简单的socket.io示例没有't将数据推送给所有浏览器
Nodejs - Simple socket.io example doesn't push data to all browers
我一定是犯了一些错误,搞不清怎么做:
【客户端】
$(document).ready(function() {
var socket = io.connect("http://localhost:8080");
socket.on("message", function(data) {
$("#theInput").val(data.data);
});
$(document).keyup(function() {
socket.emit("message", {data: $("#theInput").val()});
});
});
[服务器]
var express = require("express"),
app = express(),
server = require("http").createServer(app);
io = require("socket.io").listen(server),
site = require("./site");
server.listen(8080);
app.set("view engine", "jade");
app.set("views", __dirname + "/views");
app.use(express.logger("dev"));
app.use(express.bodyParser());
app.use(express.methodOverride());
//Handling sockets
txt = "";
io.sockets.on("connection", function(socket) {
socket.on("message", function(data) {
txt = data.data;
socket.emit("message", {data: txt});
});
});
我试图做的是在$.keyup()
事件上向服务器发送新数据,然后服务器应该将新的输入值重新分配给全局变量txt
,并将该信息推送回客户端。客户端在接收到从服务器推送的任何新数据时,应更改#theInput
的值。这有点像打开两个浏览器,然后输入1,它也应该出现在另一个浏览器上。如果我只打开一个浏览器,这意味着它会接收数据并重新分配给#theInput
,但当我打开两个不同的选项卡/浏览器来测试其同步时,每当keyup
事件触发时,它就会替换服务器中的全局txt
,并且我在这些浏览器中没有看到任何同步或实时。
我是新来的,如果有任何帮助或提示来解决这个问题,我将不胜感激。
附加问题:在index.jade中(想象一下我有一个),类似于这种结构:
root
|____ views
| |_____ index.jade
|
|____ libs
| |_____ jQuery.js
|
|server.js
从翡翠,我试图:
script(src="./libs/jQuery.js")
但结果是404,未找到。我突然想起我需要路由每个请求,所以也许我应该对外部库做同样的事情,所以我去了:
[server.js]
site = require("./site");
app.get("/jQuery", site.jQuery);
并定义路线:
[site.js]
exports.jQuery = function(req, res) {
res.sendfile("./libs/js/jQuery.js");
};
然后找到文件,但出现错误:
GET http://localhost:8080/jquery-1.10.2.min.map 404 (Not Found)
jQuery.min.map到底是什么?我从来没有遇到过这样的事情。我在互联网上搜索了所有的express示例,但不幸的是,它们都使用快捷方式http://code.jquery.com/jquery-2.0.3.min.js
来嵌入jQuery。这是有效的,也是我的临时解决方案。那么,有没有像传统服务器那样嵌入jQuery呢?
在服务器程序中将socket.emit
更改为io.sockets.emit
。
socket.emit
将向已连接的特定套接字(客户端)发送消息。io.sockets.emit
将向所有连接的套接字(客户端)发送消息
- 有时数据是't显示在浏览器中
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- web浏览器中的离线应用程序存储数据并在之后上传
- 如何使用web浏览器在NoSQL数据中呈现换行符
- zp.midpass.ru如何在浏览器中保存数据
- 在Android浏览器中将图像渲染为数据流
- 如何在上传前在浏览器中去除图像元数据(javascript)
- 如何在浏览器中触发另存为对话框,以便可以在内存中保存 json 数据
- Web 浏览器中的硬刷新和数据持久性
- 在 Angularjs 中浏览器页面的客户端加载中存储参考数据
- 将数据传递到视图而不刷新浏览器
- 打印包含1页以上的表数据时,如何在浏览器打印中添加分页符
- javascript Sencha touch仅在浏览器中不在设备上显示数据
- Node.js,并将数据发送回所有浏览器选项卡
- 如何使用浏览器查看页面源选项查看jquery附加的数据
- 在浏览器刷新上重复数据-Nodejs
- 如何在浏览器中压缩json请求数据
- 在浏览器会话中保存表单数据
- Parse.com文件不更新,导致从数据浏览器断开链接
- Parse.com云代码:不能保存数据浏览器对象