使用外部节点脚本连接到已在 index.js 中定义的 socket-io
Connect to socket-io already defined in index.js using external node script
我在我的 MEAN 堆栈中使用 hapijs 并实现了 socket.io(使用它作为参考:http://matt-harrison.com/using-hapi-js-with-socket-io/)一切正常,没有问题。它在我的应用程序中效果很好!
但是,我将通过命令行单独 运行 脚本(这将对应用程序进行一些维护)我希望连接到同一个网络套接字并能够推送如果需要刷新数据,则向客户发送消息。
我的 index.js 直接取自示例:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 3000 });
var io = require('socket.io')(server.listener);
io.on('connection', function (socket) {
socket.emit('Hello');
});
server.start();
我尝试创建一个单独的 JS 文件,并执行以下操作:
var socket = require('socket.io');
var io = socket.listen(3000);
然后通过io发送消息。这似乎不对......我想我想知道这是否可以完成。弄乱我要么创建了一个单独的网络套接字,要么没有连接到客户端。
如果我需要提供更多信息,请告诉我。
谢谢。
T
在您提供的代码中,您正在创建 2 个服务器。 [io.listen()][1]
作为服务器监听一个端口。
为了传递消息,您需要做的是在单独的脚本中创建一个 socket.io client。有一个名为 socket.io-client 的单独模块,您可以要求它成为客户端:
client.js
var io = require('socket.io-client');
var socket = io('http://localhost:3000');
socket.on('beep', function () {
console.log('beep');
socket.emit('boop');
});
server.js
这也是您的服务器脚本的一个稍微更新的版本(hapi v9.0.0 对 server.start()
有一个强制回调):
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 3000 });
var io = require('socket.io')(server.listener);
io.on('connection', function (socket) {
socket.emit('beep');
socket.on('boop', function () {
console.log('boop');
});
});
server.start(function () {
console.log('Started Server!');
});
如果您打开几个终端和 运行 这些终端,您应该会看到它们之间传递的消息并且 beep
和 boop
注销:
我在我的 MEAN 堆栈中使用 hapijs 并实现了 socket.io(使用它作为参考:http://matt-harrison.com/using-hapi-js-with-socket-io/)一切正常,没有问题。它在我的应用程序中效果很好!
但是,我将通过命令行单独 运行 脚本(这将对应用程序进行一些维护)我希望连接到同一个网络套接字并能够推送如果需要刷新数据,则向客户发送消息。
我的 index.js 直接取自示例:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 3000 });
var io = require('socket.io')(server.listener);
io.on('connection', function (socket) {
socket.emit('Hello');
});
server.start();
我尝试创建一个单独的 JS 文件,并执行以下操作:
var socket = require('socket.io');
var io = socket.listen(3000);
然后通过io发送消息。这似乎不对......我想我想知道这是否可以完成。弄乱我要么创建了一个单独的网络套接字,要么没有连接到客户端。
如果我需要提供更多信息,请告诉我。
谢谢。 T
在您提供的代码中,您正在创建 2 个服务器。 [io.listen()][1]
作为服务器监听一个端口。
为了传递消息,您需要做的是在单独的脚本中创建一个 socket.io client。有一个名为 socket.io-client 的单独模块,您可以要求它成为客户端:
client.js
var io = require('socket.io-client');
var socket = io('http://localhost:3000');
socket.on('beep', function () {
console.log('beep');
socket.emit('boop');
});
server.js
这也是您的服务器脚本的一个稍微更新的版本(hapi v9.0.0 对 server.start()
有一个强制回调):
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 3000 });
var io = require('socket.io')(server.listener);
io.on('connection', function (socket) {
socket.emit('beep');
socket.on('boop', function () {
console.log('boop');
});
});
server.start(function () {
console.log('Started Server!');
});
如果您打开几个终端和 运行 这些终端,您应该会看到它们之间传递的消息并且 beep
和 boop
注销: