我要制作一个简单的 WebSocket 应用程序等待客户端连接。客户将是 Android 用户,应用程序本身是两个人的简单聊天。因此,对于 Android 应用程序,我需要知道 WebSocket 地址(以 ws:// 或 wss:// 开头)。我已经有一些网站,我在其中安装了 nodejs。但几天后,我完全搞不懂发生了什么以及如何让事情发挥作用。我什至会很高兴看到 nodejs 捕获任何 WebSocket 消息,仅此而已。
我阅读了一些关于 nodejs 和 socket.io 的手册,但我还是不知道从哪里获得 ws://地址并使其以某种方式工作。
例如,来自socket.io chat manual ,我们有:
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 之上的协议(protocol),因此两端必须使用相同的语言。
webSockets(在这种情况下是 socket.io)是为了共享你的网络服务器而构建的。因此,任何对您服务器的 webSocket 连接请求都将发送到与您的网络服务器相同的主机和端口。
每个 webSocket 请求都以一个 http 请求开始(因此它由您的网络服务器处理)并且该 http 请求作为其中的 header 请求升级到 webSocket 协议(protocol)。当您的 Web 服务器看到该自定义 header 时,它会将控制权传递给 socket.io 库,该库然后响应升级到 webSocket 协议(protocol)是正常的,并且开始作为 http 请求的套接字现在变成了套接字应用使用 webSocket/socket.io。
socket.io 库会自动处理插入您的网络服务器以查看这些协议(protocol)升级请求。
在网页中,连接到此的 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。
关于node.js - 使用 NodeJS 的简单 WebSocket 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221370/