创建简单的 Node js 服务器和客户端
我想要做的是拥有一台服务器,一个客户端将发送更新,而多个其他客户端将接收这些更新并更新页面的相关部分。
使用 Node js 一定很容易做到这一点,但我只是不知道从哪里开始。
这里有没有人可以帮助我并告诉我如何启动这个客户端和服务器。
非常感谢!
我已经到处寻找可以帮助我的东西,但它们最终都失败了......
更新
我想使用socket.io和nodeJS来建立连接。
我有我上网的服务器的起始代码:
var http = require('http'),
io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io')
server = http.createServer(function(req, res){
// your normal server code
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Hello world</h1>');
});
server.listen(5454);
// socket.io
var socket = io.listen(server);
socket.on('connection', function(client){
// new client is here!
console.log('new connection!');
client.on('message', function(){ console.log('send message') })
client.on('disconnect', function(){ console.log('disconnect') })
});
我也有客户端的代码。 但它有错误:
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
var socket = new io.Socket('localhost');
socket.connect();
console.log(socket);
socket.on('connect', function(evt){ console.log('connected',evt) })
socket.on('message', function(evt){ console.log('got message',evt) })
socket.on('disconnect', function(evt){ console.log('disconnected',evt) })
</script>
更新2:
这是我运行服务器时发生的情况:
[nlubin@localhost websocket]$ sudo node server.js
10 Mar 17:40:49 - socket.io ready - accepting connections
好的,这是我运行客户端时在chrome控制台中看到的内容:
Unexpected response code: 301
1299796919120Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919120".
1299796919120Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919120".
1299796919130Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919130".
1299796919130Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919130".
1299796919151Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919151".
1299796919157Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919157".
1299796919162Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919162".
1299796919166Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919166".
1299796919170Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919170".
1299796919174Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919174".
1299796919177Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919177".
1299796919181Failed to load resource: the server responded with a status of 404 (Not Found)
这些XHR错误不断发生
What i want to be able to do is have a server which one client will send updates and multiple other clients would receive those updates and update the relevant parts of the page.
This must be really easy todo with node js, but i just dont know where to get started.
Is there anyone here that can help and give me a push of how to startup this client and server.
Thank so much!
I have looked all over for something to help me but they all end up failing....
UPDATE
I want to use socket.io and nodeJS to make the connections.
I have starter code for the server which i got online:
var http = require('http'),
io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io')
server = http.createServer(function(req, res){
// your normal server code
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Hello world</h1>');
});
server.listen(5454);
// socket.io
var socket = io.listen(server);
socket.on('connection', function(client){
// new client is here!
console.log('new connection!');
client.on('message', function(){ console.log('send message') })
client.on('disconnect', function(){ console.log('disconnect') })
});
also i have code for the client.
but it has errors:
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
var socket = new io.Socket('localhost');
socket.connect();
console.log(socket);
socket.on('connect', function(evt){ console.log('connected',evt) })
socket.on('message', function(evt){ console.log('got message',evt) })
socket.on('disconnect', function(evt){ console.log('disconnected',evt) })
</script>
UPDATE 2:
This is what happens when i run the server:
[nlubin@localhost websocket]$ sudo node server.js
10 Mar 17:40:49 - socket.io ready - accepting connections
ok and this is what i see in the console in chrome when i run the client:
Unexpected response code: 301
1299796919120Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919120".
1299796919120Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919120".
1299796919130Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919130".
1299796919130Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919130".
1299796919151Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919151".
1299796919157Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919157".
1299796919162Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919162".
1299796919166Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919166".
1299796919170Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919170".
1299796919174Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919174".
1299796919177Failed to load resource: the server responded with a status of 404 (Not Found)
XHR finished loading: "http://localhost/socket.io/xhr-polling//1299796919177".
1299796919181Failed to load resource: the server responded with a status of 404 (Not Found)
And those XHR error keep happening
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想得到一个像样的答案,您确实需要向我们提供更多有关您正在做的事情的背景信息。
我假设当您说“客户端”时,您指的是网络浏览器。如果我理解正确的话,您将希望将数据从服务器“推送”到多个网络浏览器客户端。在这种情况下,您需要在浏览器和服务器之间保持持久连接打开 - 请查看 Socket.io 。
基本流程是(1)用户访问您的网页,(2)该网页上的一些 JavaScript 将连接到您的 Node.js/Socket.io 服务器,(3)服务器然后可以将消息推送到任何/所有当前连接的浏览器的数量,并且浏览器可以向服务器发送消息,(4) 对于来自服务器的消息,每个客户端上运行的 Javascript 可以解释这些消息并对网页的 DOM 进行适当的更改。
编辑:您的客户端 JavaScript 无法连接到服务器。如果它们在同一台机器上运行(
localhost
),那么这可能意味着端口有问题。尝试为您的客户端指定“端口”选项,在您的情况下为“5454”。
请务必重新启动 Node.js 服务器并刷新网页。
You really need to give us more context to what you are doing if you want to get a decent an answer.
I assume when you say 'client' you are referring to a web browser. And if I understand you correctly you're going to want to be 'pushing' data from the server to several web browser clients. In which case you are going to want to keep a persistent connection open between the browser and server--check out Socket.io.
The basic flow will be (1) a user visits your webpage, (2) some javascript which lives on that webpage will connect to your Node.js/Socket.io server, (3) the server can then push messages to any/all of the currently connected browsers AND the browser can send messages to the server, (4) for messages coming from the server the Javascript running on each client can interpret those messages and make the appropriate changes to the web page's DOM.
EDIT: Your client side javascript can't connect to the server. If they are running on the same machine (
localhost
) then that probably means the port is the problem.Try specifying the 'port' option for your client, which in your case is '5454'.
Be sure to restart the Node.js server AND refresh the webpage.