Javascript 简单Node.js聊天程序不使用socket.io

Javascript 简单Node.js聊天程序不使用socket.io,javascript,node.js,livechat,Javascript,Node.js,Livechat,我正在尝试学习Node并构建一个简单的聊天应用程序。似乎每个人都在使用socket.io。我想了解如何使用get和post在更基本的层面上实现这一点 基本上,我所要做的就是创建一个表单,它接受输入并将其重新发布到表单下方,以供所有人查看 这就是我到目前为止所做的: //Requirements var express = require('express'); var app = express(); //GET app.get('/', function (req, res) { //

我正在尝试学习Node并构建一个简单的聊天应用程序。似乎每个人都在使用socket.io。我想了解如何使用get和post在更基本的层面上实现这一点

基本上,我所要做的就是创建一个表单,它接受输入并将其重新发布到表单下方,以供所有人查看

这就是我到目前为止所做的:

//Requirements
var express = require('express'); 
var app = express(); 

//GET
app.get('/', function (req, res) {
 // res.send('Hello World!');
        var response =
          "<HEAD>"+
                  "<title>Chat</title>\n"+
          "</HEAD>\n"+
          "<BODY>\n"+
                    "<FORM action=\"/\" method=\"get\">\n" +
                            "<P>\n" +
                                   "Enter a phrase: <INPUT type=\"text\" name=\"phrase\"><BR>\n" +
                                   "<INPUT type=\"submit\" value=\"Send\">\n" +
                           "</P>\n" +
                   "</FORM>\n" +
          "<P>phrase</P>\n"+
          "</BODY>";
        var phrase = req.query.phrase;
        if(!phrase){
                res.send(response);
        }else{
                res.send(response);
                res.send(phrase);
        }
});

//For testing
app.get('/test', function(req, res){
        res.send('I am a robot');
        console.log('told visiter I am a robot');
});

//Run the app
var server = app.listen(8080, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('App listening at http://%s:%s', host, port);
});

我一直在尝试很多事情,但我还是被难倒了

你听说过消息后端吗

它与Node.JS的开源fork一起工作。JXM本身是一个开源项目,您可以在github上找到它:

它真的是又快又高效,你可以查一些。例如,下面是您需要在服务器端运行的最少代码:

var server = require('jxm');
server.setApplication("Hello World", "/helloworld", "STANDARD-KEY-CHANGE-THIS");
server.addJSMethod("serverMethod", function (env, params) {
   server.sendCallBack(env, params + " World!");
});
server.start(); 
客户部分可在此处找到:


JXM还支持在android和节点客户端上运行Java客户端。

Get and post only post back或Get back结果给请求它的客户端,而不是全部。您需要web套接字将响应发送给每个人,socket.io是最好的。是否无法让节点使用结果更新html?或者这需要页面刷新吗?除了套接字之外,还有其他方法可以将数据推送到连接的客户端。使用http模块编写EventSource SSE服务器非常简单,您可以延迟http返回的响应,甚至可以使用comet或jsonp长轮询。或者,就像所有php聊天脚本一样,使用hammer轮询……至少dandavis描述的一些方法(如长轮询和hammer轮询)专门用于绕过http的传统请求-响应限制。每个人都使用socketio可能有一个很好的理由:我建议大家开始使用EventSource。它是一种始终在线的方式,可以立即将数据推送到客户端。由于http可以随时推送到服务器,因此您只需要实时连接单向S->C。在现有基于http的脚本中加入一个简单的节点实现片段:那么客户端就很容易了,请参阅文档以获取示例。