我让我的node.js服务器在我的本地机器(windows)上运行和通信。但是当我复制我的项目并试图在我的在线服务器(Linux)上运行它时,socket.io不会在服务器和客户端之间进行通信(html页面)。我没有错误,socket.io安装在服务器上。目录为/var/www/lynx.html。
如何指导服务器与客户端通信,以及客户端与服务器的连接。我试图将http:\\localhost更改为各种类型的东西,如实际ip地址和本地127.0.0.1
下面是我代码的重要部分。
客户端
<script type="text/javascript">
var socket = io.connect('http://localhost');
socket.on('message', function(message){
var obj = jQuery.parseJSON(message);
var htmlStr =''; 服务器
var dgram = require("dgram");
var udpResultsServer = dgram.createSocket("udp4");
var udpTimeServer = dgram.createSocket("udp4");
var http = require('http');
var io = require('socket.io');
var htmlPage;
var jsonResults;
var tempResults = '';
var finalResults = '';
var time = '0.0';
var r = new Array();
/*
************************************
** Get Ip Addresses **
************************************
*/
function getIP(){
var os = require( 'os' );
var networkConfig = os.networkInterfaces( );
var ipList ='';
for (var name in networkConfig) {
networks = networkConfig[name];
for (var name in networks) {
details = networks[name];
if (details['family'] == "IPv4"){
ipList = ipList + details['address'] + " ";
}
}
}
return ipList;
}
/*
************************************
** Web server and sockets.io **
************************************
*/
var htmlPage;
// read html file to serve
fs.readFile('lynx.html', function(error, data){
if (error){
throw error;
}
else{
htmlPage = data;
console.log('Server wrote to lynx.html file');
}
});
// start web server
var htmlServer = http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
console.log('Client Connected ....');
response.end(htmlPage);
});
htmlServer.listen(8000,'127.0.0.1');
console.log("HTML server started on: " + getIP());
// start up socket.io for transmitting data to the web page
var serv_io = io.listen(htmlServer, { log: false });
serv_io.sockets.on('connection', function(socket){
//send data to client
setInterval(function(){
jsonResults = JSON.stringify(r); // convert final array into a json string
socket.send(jsonResults); // sent json results via socket
console.log('send <--> receive');
}, 1000);
});当我在我正在处理的驱动器中本地安装Socket.io时,这些都是错误,这会导致错误吗?
我还安装了全局-g,没有出现错误。
npm WARN package.json fs@0.0.2 fs is also the name of a node core module.
npm WARN package.json fs@0.0.2 No description
npm WARN package.json fs@0.0.2 No repository field.
npm WARN package.json net@1.0.2 net is also the name of a node core module.
npm WARN package.json net@1.0.2 'repositories' (plural) Not supported. Please pick one as the 'repository' field
npm WARN package.json has-binary-data@0.1.5 No repository field.
socket.io@1.2.1 node_modules/socket.io
âââ debug@0.7.4
âââ has-binary-data@0.1.3 (isarray@0.0.1)发布于 2014-12-11 22:26:46
如果您的服务器位于加载网页的同一主机和端口上,那么您应该可以在客户机中这样做:
var socket = io();它将获得与网页加载时相同的主机/端口,并与之建立socket.io连接。
如果您的socket.io服务器与网页不在同一个主机/端口上,那么您可能会遇到一些需要解决的跨源问题。
https://stackoverflow.com/questions/27433459
复制相似问题