Simple node.js套接字服务器
我正在尝试创建一个简单的node.js服务器,它将允许我基于套接字的iOS应用程序将其GPS坐标发送到服务器,并且服务器将向所有连接的iOS客户端广播GPS坐标。类似地,客户端使用套接字连接到服务器。我尝试使用Heroku的web服务器上的一些示例代码。代码经过编辑以包含ANURAG的答案Simple node.js套接字服务器,node.js,sockets,heroku,websocket,socket.io,Node.js,Sockets,Heroku,Websocket,Socket.io,我正在尝试创建一个简单的node.js服务器,它将允许我基于套接字的iOS应用程序将其GPS坐标发送到服务器,并且服务器将向所有连接的iOS客户端广播GPS坐标。类似地,客户端使用套接字连接到服务器。我尝试使用Heroku的web服务器上的一些示例代码。代码经过编辑以包含ANURAG的答案 var WebSocketServer = require("ws").Server var http = require("http") var express = require("express") v
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]);
}
});
但是,如何从客户端接收消息,以及如何使接收到的消息成为广播给其他客户端的消息。获得连接后,您需要存储这些连接。 然后,您可以向所有这些设备发送消息,并使用这些连接连接到您的服务器。 您可以尝试以下方法:
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]);
}
});
var connectionList=[];
wss.on(“连接”,函数(ws){
连接列表推送(ws);
})
wss.on(“消息”,函数(数据,id){
var mes=服务器。取消屏蔽消息(数据);
var str=server.convertToString(mes.message);
console.log(str);
var i;
对于(i=0;i
请在此处阅读更多信息:以下是完整的index.js代码,以便服务器brodcast将收到的消息发送给客户端:
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")
wss.broadcast = function(data) {
for (var i in this.clients)
this.clients[i].send(data);
};
wss.on("connection", function(ws) {
console.log("websocket connection open");
ws.on('message', function(message) {
console.log("message received by server");
wss.broadcast(message);
})
ws.on("close", function() {
console.log("websocket connection close")
})
})
谢谢你的回答!当我将您的代码添加到项目中(查看编辑的代码)时,我尝试在端口5000上使用telnet在本地测试代码,但是我根本无法连接到服务器。这对你来说也是一样吗?@Aimee:我不想给你一个有效的解决方案。我想给你一个想法,事情应该如何实施,这样你就可以自己做了。
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")
wss.broadcast = function(data) {
for (var i in this.clients)
this.clients[i].send(data);
};
wss.on("connection", function(ws) {
console.log("websocket connection open");
ws.on('message', function(message) {
console.log("message received by server");
wss.broadcast(message);
})
ws.on("close", function() {
console.log("websocket connection close")
})
})