一定是我的一些错误我无法弄清楚:
[客户]
$(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
. 这有点像打开 2 个浏览器,然后输入 1,它应该也会出现在另一个浏览器上。#theInput
如果我只打开 1 个浏览器效果keyup
很好,这意味着它会接收数据并重新分配给txt
在这些浏览器中没有看到任何同步或实时。
我是新手,非常感谢任何解决问题的帮助或提示。
附加问题:在 index.jade 中(想象一下我有一个),就像在这个结构中一样:
root
|____ views
| |_____ index.jade
|
|____ libs
| |_____ jQuery.js
|
|server.js
从玉,我试图:
script(src="./libs/jQuery.js")
但它导致404,未找到。我突然想起我需要路由每个请求,所以也许我应该对外部库做同样的事情,所以我去了:
[服务器.js]
site = require("./site");
app.get("/jQuery", site.jQuery);
并定义路线:
[网站.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呢?