我正在尝试创建一个简单的 node.js 服务器,它允许我的基于套接字的 iOS 应用程序将它的 GPS 坐标发送到服务器,服务器将向所有连接的 iOS 客户端广播 GPS 坐标。同样,客户端使用套接字连接到服务器。我尝试使用 Heroku 的 Web 服务器中的一些示例代码。代码经过编辑以包含 ANURAG 的答案
var WebSocketServer = require("ws").Server
var http = require("http")
var express = require("express")
var app = express()
var port = process.env.PORT || 5000
app.use(express.static(__dirname + "/"))
var server = http.createServer(app)
server.listen(port)
console.log("http server listening on %d", port)
var wss = new WebSocketServer({server: server})
console.log("websocket server created")
var connectionList = [];
wss.on("connection", function(ws) {
console.log("connection");
connectionList.push(ws);
})
wss.on("message", function(data, id) {
var mes = server.unmaskMessage(data);
var str = server.convertToString(mes.message);
console.log(str);
var i;
for(i = 0; i < connectionList.lenth; i++) {
wss.sendMessage(one, str, connectionList[i]);
}
});
我如何修改此代码以便能够从我的应用程序接收消息(通过套接字),然后将该消息发送到连接的所有其他 iOS 客户端。 (消息只是一个简单的字符串)
红利问题:因为 Heroku 让您使用它的环境端口(而不是您自己指定的端口),所以在我的 iOS 应用程序中,当我连接到服务器时,我是否只指定在服务器连接到控制台时打印到控制台的端口开始了。
感谢任何帮助,谢谢! :)
编辑:为了向客户端广播,代码是:
wss.on('connection', function(ws) {
ws.on('message', function(message) {
wss.broadcast(message);
});
});
但是,我如何从客户端接收消息,以及如何将接收到的消息作为要广播给其他客户端的消息。
最佳答案
获得连接后,您需要存储这些连接。 然后您可以使用这些连接向所有连接到您的服务器的设备发送消息。 你可以尝试这样的事情:
var connectionList = [];
wss.on("connection", function(ws) {
connectionList.push(ws);
})
wss.on("message", function(data, id) {
var mes = server.unmaskMessage(data);
var str = server.convertToString(mes.message);
console.log(str);
var i;
for(i = 0; i < connectionList.lenth; i++) {
wss.sendMessage(one, str, connectionList[i]);
}
});
关于node.js - 简单的 node.js 套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917293/