gpt4 book ai didi

node.js - socket.io 远程客户端不工作

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:58 26 4
gpt4 key购买 nike

我正在尝试使用 socket.io 将本地计算机上的 Chrome 浏览器连接到远程 Node 服务器。我使用expressjs提供 Node 服务器上的所有文件,因此我有一个包含html和js文件的公共(public)目录(我在从npm获得的node_modules下创建了一个指向socket.io文件的符号链接(symbolic link))。

我遇到的问题是,当 Chrome 提取我的 index.html 时,我收到以下错误:

Uncaught ReferenceError :require未定义socket.io.js:12 Uncaught ReferenceError :io 未定义

我像其他一些帖子一样尝试了 cdn,但这导致了另一个问题。很多帖子都提倡这种方法,所以我不确定为什么它不能解决 Nodejs 的问题。有什么想法吗?

这是我的 index.html 的样子:

<html>
<head>
</head>
<body>
<script src="http://nodeserver:8080/socket.io/lib/socket.io.js"></script>

<script>
var socket = io.connect('http://nodeserver:8080');
socket.on('', function (data) {
console.log(data);
socket.emit('update checkins', { my: 'data' });
});
</script>
<h2>Test Page</h2>
</body>
</html>

我的服务器代码如下所示:

    var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);

// Get the environment variables we need.
var ipaddr = process.env.VCAP_APP_HOST || 'myserver.com';
var port = process.env.PORT || 8080;

app.configure(function() {
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});

// set up the RESTful API, handler methods are defined in api.js
var api = require('./controller/api.js');
app.get('/foursq', api.list);

// Set Socket.io
io.sockets.on('connection', function (socket) {
console.log('Socket created...');
socket.emit('welcome', {welcome: 'you'});
socket.on('update checkins', function (msg) {
socket.broadcast.emit('checkins', api.list);
});
});

// And start the app on that interface (and port).
app.listen(port, ipaddr, function () {
console.log('%s: Foursquare Node server started on %s:%d ...', Date(Date.now()),
ipaddr, port);
});

最佳答案

问题是我有原始代码监听应用程序对象,但是当我更新代码以添加套接字时,我忽略了将其更改为 server.listen,如下所示:

server.listen(port, ipaddr, function () {
console.log('%s: Foursquare Node server started on %s:%d ...', Date(Date.now()),
ipaddr, port);
});

这样我就可以简单地将脚本包含如下,而不必像比利指出的那样复制任何内容:

<script src="/socket.io/socket.io.js"></script>

关于node.js - socket.io 远程客户端不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com