Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Simple node.js套接字服务器_Node.js_Sockets_Heroku_Websocket_Socket.io - Fatal编程技术网

Simple node.js套接字服务器

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

我正在尝试创建一个简单的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]);
    }
});

但是,如何从客户端接收消息,以及如何使接收到的消息成为广播给其他客户端的消息。

获得连接后,您需要存储这些连接。 然后,您可以向所有这些设备发送消息,并使用这些连接连接到您的服务器。 您可以尝试以下方法:

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")
  })
})