简单的WebSocket应用程序与NodeJS

我要做一个简单的WebSocket应用程序等待客户端连接。 客户端将是Android用户,而应用程序本身就是两个人的简单聊天室。 所以对于Android应用程序,我需要知道WebSocket地址(以ws://wss://开头)。 我已经有一些网站,我在那里安装nodejs。 但是几天之后,我完全停留在发生什么事以及如何使某件事情成功。 我甚至很高兴看到nodejs捕获任何WebSocket消息,就是这样。

我阅读了关于nodejs和socket.io的一些手册,并且我不知道在哪里得到这个ws://地址并使其工作。

例如,从socket.io聊天手册 ,我们有:

var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendfile('index.html'); }); io.on('connection', function(socket){ console.log('a user connected'); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 

那已经是简单的websocket应用程序了吗? 在这种情况下,我所期望的ws://地址在哪里? 也许我应该只是上传一堆代码在我的服务器上,并发送查询ws://mydomain.com:3000

如果你在服务器上使用socket.io库,那么你也必须在客户端使用一个socket.io兼容库,因为它是webSocket之上的一个协议,所以两端必须使用相同的语言。

webSockets(在这里是socket.io)是为了共享你的web服务器而构build的。 因此,任何webSocket连接请求到您的服务器只是发送到您的networking服务器相同的主机和端口。

每个webSocket请求都以一个http请求开始(因此它是由你的web服务器处理的),并且这个http请求作为一个头部请求升级到webSocket协议。 当你的web服务器看到这个自定义头文件时,它会把控制权交给socket.io库,然后响应升级到webSocket协议是OK的,并且作为一个http请求开始生命的套接字现在变成了套接字,应用程序会说webSocket / socket.io。

socket.io库处理自动插入到您的Web服务器,以查看这些协议升级请求。

在网页中,连接到这个的socket.io客户端代码看起来像这样:

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); socket.on('connect', function() { // socket.io webSocket connection with your server is now established }); </script> 

socket.io库会自动连接回网页所在的主机。 你甚至不需要放入一个URL。