我正在尝试创建一个简单的node.js服务器,允许我的基于socket的iOS应用将其GPS坐标发送到服务器,然后服务器会向所有已连接的iOS客户端广播该GPS坐标。同样地,客户端也是使用sockets与服务器连接。我尝试使用Heroku web服务器的一些示例代码。代码已经被编辑以包括ANURAG的答案。
我该如何修改这段代码,以便能够通过套接字接收来自我的应用程序的消息,然后将该消息发送给所有其他已连接的iOS客户端。(该消息只是一个简单的字符串)
额外问题:由于Heroku要求您使用其环境端口(而不是您指定的端口),所以在我的iOS应用程序中,当我连接到服务器时,我只需指定在启动服务器时打印到控制台的端口即可。
感谢任何帮助!:)
编辑:对于向客户端广播,代码如下:
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);
});
});
然而,我应该如何从客户端接收消息,并将接收到的消息作为要广播给其他客户端的消息。