我使用Node.js和受socket.io的实时通知系统,所以我已经测试的Node.js和简单的聊天代码socket.io,它几乎与本地主机好,但不能从其他系统访问相同的这与同一网络本地连接,我的服务器和客户端的代码看起来像下面
server.js
var express = require('express')
, app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
server.listen(8888);
和客户端HTML index.html
<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
var socket = io.connect('http://localhost:8888');
</script>
它的工作在我的浏览器这个网址http://localhost/schat/index.html
但是当我试图用我的IP 192.171.56.23/schat/index.html
从另一个系统连接,但所有其他的html文件工作正常不工作,下面是我的netstat的输出
[root@localhost schat]# netstat -pan | grep 8888
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 8068/node
tcp 0 0 127.0.0.1:8888 127.0.0.1:38273 ESTABLISHED 8068/node
tcp 0 0 127.0.0.1:38273 127.0.0.1:8888 ESTABLISHED 7990/firefox
下面是从socket.io docs一个工作示例(略有修改)。
使用<script src="/socket.io/socket.io.js"></script>
而不是<script src="http://localhost:8888/socket.io/socket.io.js"></script>
并使用var socket = io.connect(window.location.origin);
而不是var socket = io.connect('http://localhost:8888');
(Sotsket.yo v1.z.5,快速vch.12.2)
的index.html
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect(window.location.origin);
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
server.js
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8888);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
更改您的客户端代码
<script>
var url = window.location.host;
var socket = io.connect(url);
</script>
我有同样的问题,我固定它:
感谢卡里姆,你对我的解决方案的工作,在“server.js”配置我设置了“端口”值和“服务器”,而不是IP,我只使用名称,而不的“https://”,这样:
// External route.
var express = require("express");
var router = express.Router();
// In cloud 9 use port 8081
const port = 8081;
const webLnk = 'mywebdevaddress.io';
// In dev local ambient 'localhost' work without the 'port' and the server, in prod internet // you need to specify the port and the link name.
const server = require('http').Server(router).listen(port, webLnk);
const io = require('socket.io')(server);
是官方socket.io文档我没有看到任何这!